Hibernate通过无状态会话保存延迟获取的实体

时间:2013-09-03 13:34:48

标签: java hibernate jpa playframework

出于优化目的,我想用hibernate无状态会话更新一些实体。

然而,这些实体是从“经典”会话加载的(我需要缓存功能来加快我的实体加载)。 所有这些都可能很好,但我的一些实体被懒惰地初始化,因此他们的类名称类似于:myentity_$$_javassist_22。因此,我的无状态会话不想更新我的实体。

有没有办法将懒惰的初始化实体转换为加载的实体?

谢谢

1 个答案:

答案 0 :(得分:2)

如果在将它们提供给无状态会话之前手动获取所有延迟加载的实体,它将起作用(不再需要代理)。但它可能会花费很多,因为它会生成许多查询来加载完整的对象图。

你要么先使用Hibernate.initialize(lazyEntity)获取它们,要么用kill-killing方法杀死它们(但你会保存null:可能它不是你想要的)。

检查有关Hibernate无状态会话的其他问题,看看它是否是解决问题的好方法 Using StatelessSession for Batch processing