【发布时间】:2011-07-12 18:43:37
【问题描述】:
在 Hibernate Envers 中,实体的所有相关集合都是延迟加载的,而不管设置了什么获取类型。因此,当对具有其他实体集合的实体进行审计查询时(当然都是经过审计的),该集合最初是SetProxy(在调试时可以看到)。
那么,我该如何初始化那个代理呢?使用 Hibernate.initialize() 没有效果(我怀疑是因为 Hibernate 和 Envers 使用不同的代理对象)。我知道我可以通过迭代它的项目来初始化集合,但这对我来说不是一个选择,因为我在一个实体中有多个集合,更不用说维护问题了。
我需要立即初始化它们,因为我稍后会在 Hibernate 会话已经关闭(将域对象转换为 dtos)时访问集合。
我使用的是 Hibernate 3.5.6。
【问题讨论】:
-
我也无法让这玩意儿工作! Envers 似乎忽略了 fetch 计划!我有几个实体设置为使用 SELECT 获取模式急切获取(因为我知道它们始终位于二级缓存中 - 只读且永久)。渲染 JSP 时出现延迟初始化错误。痛苦的你知道什么。 :( 咕噜!
标签: java hibernate proxy lazy-loading hibernate-envers