在分离的对象中进行Hibernate延迟加载

时间:2010-10-05 10:10:30

标签: java hibernate lazy-loading

我已经创建了一个类,我在其中设置了一些要加载LAZY的字段(其他实体)。现在我需要在从会话中分离后使用该对象,因此我显然需要确保在分离之前填充所需的所有字段。我试着把这些懒惰的字段叫做吸气剂,但这似乎不起作用。任何人都知道如何强制加载这些字段?

4 个答案:

答案 0 :(得分:13)

Hibernate.initialize(yourObject)

将强制初始化传递给它的对象/集合。你需要一个活跃的会话。

如果实体已分离,则必须将对象(使用merge(..))重新附加到活动会话,然后将其初始化。

答案 1 :(得分:3)

您可以将其重新附加到会话中。这是正常的方式。

session.update(yourObject); //This reattachs the object to the current session.
yourObject.someGetter(); //This will work now.

答案 2 :(得分:2)

<prop key="hibernate.enable_lazy_load_no_trans">true</prop> 

你可以将这一行添加到配置文件中,即使它被分离也可以获取你的懒惰对象,但它应该使用4.1.7之后的版本,因为以前的版本存在一些连接泄漏问题。查看{{3} }

答案 3 :(得分:1)

我知道您要求使用Hibernate,但EclipseLink具有此功能,因此如果您使用的是JPA并且不依赖于给定的实现,则可能值得一试。您可能会遇到迁移到EclipseLink的其他问题。