首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NHibernate:如何在一对一映射上启用延迟加载

NHibernate:如何在一对一映射上启用延迟加载
EN

Stack Overflow用户
提问于 2008-12-23 06:42:25
回答 6查看 10.4K关注 0票数 16

nhibernate中的一对一关系可以延迟加载"false“或"proxy”。我想知道是否有人知道一种懒惰的一对一映射的方法。

我使用了一个映射到私有字段的惰性集合,并让公共属性返回该集合的第一个结果,从而实现了同样的结果。它可以工作,但不是最干净的代码...

提前感谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-23 08:28:14

除非关联是强制的,否则不支持一对一的延迟加载。有关理由,请参阅here

归根结底,为了确定关系的另一端是否存在(N),Hibernate必须访问数据库。既然您已经获得了数据库命中,那么您不妨加载完整的对象。

虽然在某些情况下,访问数据库只是为了查看相关对象是否存在而不实际加载对象是有意义的(如果相关对象非常“繁重”),但目前在NHibernate中不支持。

票数 20
EN

Stack Overflow用户

发布于 2008-12-23 06:46:41

据我所知,没有一种非黑客的方式可以懒惰地加载一对一的内容。我希望我是错的,但我最后一次检查是这样的。

票数 4
EN

Stack Overflow用户

发布于 2009-02-16 05:21:01

有一种思考的方式。详细介绍了here

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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> 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/389026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文