【发布时间】:2015-01-26 00:56:40
【问题描述】:
我在我的对象中使用 Hibernate,即使会话没有关闭也会出现延迟初始化异常。
这里是问题对象的关系。有 3 个对象:
- 对象A
- 对象B
- 对象C
ObjectA 包含 ObjectB 为 FetchType=EAGER ObjectB 包含 ObjectC 作为 FetchType=LAZY
我们正在获取 ObjectA。因此,由于渴望获取类型,它会自动获取 ObjectB。 但是当我尝试使用 ObjectB 获取 ObjectC 时,会出现此错误。
代码太大且专有。所以,不能分享代码。
注意: 1. 所有这些操作都在一个事务中完成。 2.我检查了日志,发现会话没有被关闭。 3. 我找到了类似的链接 - LazyInitializationException in JPA and Hibernate 我也在我的代码中使用 annotationDriven 标记,正如这个链接中所建议的那样。
我不知道为什么会这样。
【问题讨论】:
-
你能和我们分享一下代码/配置/日志吗?谢谢
-
我想你已经把@Transactional 放在你的服务类上?
-
@geert3: 代码太大而且专有。所以,不能分享代码。
-
@StijnGeukens:是的,我已经说过了。
-
“即使会话没有关闭也会出现延迟初始化异常” - 那么你如何证明呢?因为目前我只能假设加载实体的会话已关闭,而您只是不明白为什么。当您说“a”会话已打开时,我当然会完全相信您-但我不相信您是加载实体的会话。例如,当您有嵌套事务情况时,问题可能已经发生。
标签: java hibernate debugging lazy-loading