出于优化目的,我想用休眠无状态会话更新一些实体。
然而,这些实体是从“经典”会话加载的(我需要缓存功能来更快地加载我的实体)。所有这一切都可能很好,但我的一些实体是延迟初始化的,所以它们的类名类似于 : myentity_$$_javassist_22
。因此,我的无状态会话不想更新我的实体。
有没有办法将延迟初始化的实体转换为加载的实体?
谢谢你
出于优化目的,我想用休眠无状态会话更新一些实体。
然而,这些实体是从“经典”会话加载的(我需要缓存功能来更快地加载我的实体)。所有这一切都可能很好,但我的一些实体是延迟初始化的,所以它们的类名类似于 : myentity_$$_javassist_22
。因此,我的无状态会话不想更新我的实体。
有没有办法将延迟初始化的实体转换为加载的实体?
谢谢你
如果您在将它们提供给无状态会话之前手动获取所有延迟加载的实体,它将起作用(不再有代理)。但它可能会花费很多,因为它会生成许多查询来加载完整的对象图。
例如,您要么使用 Hibernate.initialize(lazyEntity) 获取它们,要么使用代理终止方法杀死它们(但您将保存 null:可能不是您想要的)。
检查this other question about Hibernate stateless session,看看它是否是解决您的问题的好解决方案 Using StatelessSession for Batch processing