nhibernate中的一对一关系可以延迟加载"false“或"proxy”。我想知道是否有人知道一种懒惰的一对一映射的方法。
我使用了一个映射到私有字段的惰性集合,并让公共属性返回该集合的第一个结果,从而实现了同样的结果。它可以工作,但不是最干净的代码...
提前感谢!
发布于 2008-12-23 08:28:14
除非关联是强制的,否则不支持一对一的延迟加载。有关理由,请参阅here。
归根结底,为了确定关系的另一端是否存在(N),Hibernate必须访问数据库。既然您已经获得了数据库命中,那么您不妨加载完整的对象。
虽然在某些情况下,访问数据库只是为了查看相关对象是否存在而不实际加载对象是有意义的(如果相关对象非常“繁重”),但目前在NHibernate中不支持。
发布于 2008-12-23 06:46:41
据我所知,没有一种非黑客的方式可以懒惰地加载一对一的内容。我希望我是错的,但我最后一次检查是这样的。
发布于 2009-02-16 05:21:01
有一种思考的方式。详细介绍了here:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateTest" namespace="NHibernateTest">
<class name="Person" >
<id name="PersonID" type="Int32">
<generator class="identity" />
</id>
<property name="LastName" type="String" length="50" />
<property name="FirstName" type="String" length="50" />
<many-to-one name="Photo" class="PersonPhoto" />
</class>
<class name="PersonPhoto">
<id name="PersonID" type="Int32">
<generator class="foreign">
<param name="property">Owner</param>
</generator>
</id>
<property name="Photo" type="BinaryBlob" />
<one-to-one name="Owner" class="Person" constrained="true" />
</class>
</hibernate-mapping>
https://stackoverflow.com/questions/389026
复制相似问题