Java Hibernate Lazy = false

时间:2011-01-02 16:50:15

标签: java hibernate

设置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 ??

2 个答案:

答案 0 :(得分:4)

您无法在运行时更改配置。但您可以使用Hiberante.initialize(..)初始化延迟集合。

答案 1 :(得分:3)

哟可以使用getOptions()手动完成。但是,如果您现在已经加载了实体,那么您将需要这些选项,那么您可以通过这种方式使用fetch join进行急切获取:

 select c from EntityX c left join fetch c.Options

这是一个重要的优化措施,因为如果您预先获取您将需要的数据,您可以避免大量额外选择。