2009-11-02 179 views
0

我有了实体B的外键的实体答:Hibernate外键映射?

entity A --> id, entity_a_name, foreign_key_entity_B 

当我打电话

return session.createCriteria(EntityA.class).list(); 

我得到entityB的财产实体A内为好。我如何使它延迟加载,所以它不会加载enityB如果不需要?

回答

1

从描述中不清楚你说的是什么类型的关系,但如果是多对一或一对一,事情并不那么简单。如果A.entityB为空(非可选),那么Hibernate将被迫加载关系以查看属性是否为空。只有将关系标记为非可选(在这种情况下,休眠假定它不为空,否则它是错误的),是否可以使其加载延迟?

1
  • @LazyCollection:定义了@ManyToMany 和@OneToMany协会lazyness选项。 LazyCollectionOption可以TRUE (集合是懒惰,会 时,其状态被访问加载), EXTRA(集合是懒惰 和所有的操作会尽量 避免集合装载,这 是巨额特别有用 集合时加载所有 元件是不必要的)和FALSE (协会不懒惰)

  • @抓取:定义用于加载 关联的抓取策略。 FetchMode可以SELECT (一个选择时触发 协会需要加载), 子查询(仅适用于 集合,使用子查询 策略 - 请参阅 Hibernate参考文档的 更多信息)或加入(在加载所有者实体时使用 SQL JOIN加载关联 )。 JOIN 将覆盖任何惰性属性(通过JOIN加载 策略不能延迟的作为 协调)。