我有一个实体a的外键是实体b:
entity A --> id, entity_a_name, foreign_key_entity_B
当我打电话的时候
return session.createCriteria(EntityA.class).list();
我在实体a中也得到了实体B的属性。如何使它延迟加载,以便在不需要时不加载enityb?
iklwldmw1#
@lazycollection:定义@manytomy和@onetomany关联的lazyness选项。lazycollectionoption可以是true(集合是lazy的,当其状态被访问时将被加载)、extra(集合是lazy的,所有操作都将尝试避免集合加载,这对于不需要加载所有元素的大型集合特别有用)和false(关联不是lazy的)@fetch:定义用于加载关联的获取策略。fetchmode可以是select(在需要加载关联时触发select)、subselect(仅对集合可用,使用subselect策略-有关详细信息,请参阅hibernate参考文档)或join(在加载所有者实体时使用sql join加载关联)。join覆盖任何lazy属性(通过join策略加载的as关联不能是lazy)。
fcg9iug32#
从你的描述中不清楚你在谈论什么类型的关系,但如果是多对一或一对一,事情就不那么简单了。如果 A.entityB 如果可以为null(非可选),则hibernate将强制加载关系以查看属性是否为null。只有将关系标记为非可选关系(在这种情况下,hibernate假设它不是null,因为它是一个错误),才能使它延迟加载。
A.entityB
2条答案
按热度按时间iklwldmw1#
@lazycollection:定义@manytomy和@onetomany关联的lazyness选项。lazycollectionoption可以是true(集合是lazy的,当其状态被访问时将被加载)、extra(集合是lazy的,所有操作都将尝试避免集合加载,这对于不需要加载所有元素的大型集合特别有用)和false(关联不是lazy的)
@fetch:定义用于加载关联的获取策略。fetchmode可以是select(在需要加载关联时触发select)、subselect(仅对集合可用,使用subselect策略-有关详细信息,请参阅hibernate参考文档)或join(在加载所有者实体时使用sql join加载关联)。join覆盖任何lazy属性(通过join策略加载的as关联不能是lazy)。
fcg9iug32#
从你的描述中不清楚你在谈论什么类型的关系,但如果是多对一或一对一,事情就不那么简单了。如果
A.entityB
如果可以为null(非可选),则hibernate将强制加载关系以查看属性是否为null。只有将关系标记为非可选关系(在这种情况下,hibernate假设它不是null,因为它是一个错误),才能使它延迟加载。