我有一个实体A,它有一个实体B的外键:
entity A --> id, entity_a_name, foreign_key_entity_B
当我打电话
return session.createCriteria(EntityA.class).list();
我也在实体A中获得了entityB的属性。如何使其延迟加载,以便在不需要时不加载enityB?
答案 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加载 战略不能懒惰。)