【发布时间】:2011-06-11 18:50:42
【问题描述】:
我将 Spring 3 与 Hibernate 一起使用。我有一个用户请求,它在 spring 控制器中启动一个 java 线程,然后发送一个响应,因此当用户 http 响应已经发送时,该线程可能会继续工作。
如果我在线程中使用惰性集合,我会收到以下错误:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: my.model.MyClass.lazyCollection, no session or session was closed
我读到我可以使用 Hibernate.initialize(entity) 来完全获取惰性集合,但我不能使用它,因为我只是在线程中填充集合。此外,我尝试使用 merge() 但这仍然不能解决问题。
有没有办法手动保持会话打开或为线程打开一个新会话?
感谢您的帮助!
【问题讨论】:
-
你是在一个网络应用程序中,所以一个http请求是一个线程,还是你别的什么?
-
是的,我在一个带有 spring mvc 的 Web 应用程序中。但是,除了请求线程之外,我还自己创建了一个。
标签: hibernate spring jakarta-ee servlet-filters