设置Lazy=false
时,休眠会自动将对象加载到所需的集合中,例如。
<set name="Options" table="ATTRIBUTEOPTION" inverse="false" cascade="all" lazy="false">
<key>
<column name="ATTRIBUTEID" />
</key>
<one-to-many class="com.BiddingSystem.Models.AttributeOption" />
</set>
但是如果在我的xml映射中,我放置lazy = true并且在我的应用程序的某个地方我决定我想加载所有属性选项,我应该手动执行,还是有一种技术可以告诉hibernate现在我想设置lazy=false
??
答案 0 :(得分:4)
您无法在运行时更改配置。但您可以使用Hiberante.initialize(..)
初始化延迟集合。
答案 1 :(得分:3)
哟可以使用getOptions()手动完成。但是,如果您现在已经加载了实体,那么您将需要这些选项,那么您可以通过这种方式使用fetch join进行急切获取:
select c from EntityX c left join fetch c.Options
这是一个重要的优化措施,因为如果您预先获取您将需要的数据,您可以避免大量额外选择。