Hibernate外键映射?

时间:2009-11-02 08:06:19

标签: java hibernate foreign-keys foreign-key-relationship

我有一个实体A,它有一个实体B的外键:

entity A --> id, entity_a_name, foreign_key_entity_B 

当我打电话

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

我也在实体A中获得了entityB的属性。如何使其延迟加载,以便在不需要时不加载enityB?

2 个答案:

答案 0 :(得分:1)

从你的描述中不清楚你在谈论什么类型的关系,但如果它是多对一或一对一,事情并不那么简单。如果A.entityB可以为空(非可选),则强制Hibernate急切加载该关系,以查看该属性是否为null。只有将关系标记为非可选(在这种情况下,Hibernate 假设它不为空,因为它是一个错误,否则)你可以让它懒得加载。

答案 1 :(得分:1)

  
      
  • @ LazyCollection :定义@ManyToMany上的lazyness选项   和@OneToMany协会。   LazyCollectionOption可以为TRUE   (这个系列是懒惰的,将会是   在访问其状态时加载),   EXTRA(这个系列很懒散   并且所有操作都将尝试   避免收集加载,这个   特别适用于巨大的   加载所有的集合   元素是没有必要的)和FALSE   (协会不懒)

  •   
  • @ 获取:定义用于加载的提取策略   协会。 FetchMode可以是SELECT   (选择是在时触发的   需要加载关联),   SUBSELECT(仅适用于   集合,使用子选择   策略 - 请参考   Hibernate参考文档   更多信息)或加入(使用a   SQL JOIN加载关联   在加载所有者实体时)。加入   覆盖任何惰性属性(如   社会通过JOIN加载   战略不能懒惰。)

  •