当设置Lazy=false时,hibernate会自动将对象加载到所需的集合中,例如
<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??
发布于 2011-01-03 01:19:51
您不能在运行时更改配置。但是您可以使用Hiberante.initialize(..)来初始化惰性集合。
发布于 2011-01-03 01:11:00
您只需使用getOptions()就可以手动完成此操作。但是,如果在加载实体时,您现在已经需要这些选项,那么您可以使用fetch join进行一次紧急获取,如下所示:
select c from EntityX c left join fetch c.Options这是一个重要的优化,因为如果你预取你知道需要的数据,你可以避免很多额外的选择。
https://stackoverflow.com/questions/4579378
复制相似问题