0

当我尝试通过以下方式使用 ThreadLocalSessionContext 时:

Session hsession = HibernateUtils.getSession();
ThreadLocalSessionContext.bind(hsession);
// do stuff
hsession.close();

我对每一个 Struts Action 都这样做。我做错了什么,导致我收到以下错误吗?

[ThreadLocalSessionContext] Already session bound on call to bind(); make sure you clean up your sessions!

我检查了所有包含 ThreadLocalSessionContext.bind 的文件,并确保这些会话已明确关闭。有没有办法监控会话何时绑定到会话工厂?

谢谢!!

4

1 回答 1

0

事实证明,尽管文档表明“如果在此类管理的会话上调用 close(),它将自动解除绑定。” 它实际上不是自动的!

您必须显式调用ThreadLocalSessionContext.unbind(sessionFactory)才能取消绑定会话。否则,即使会话关闭,它仍然绑定到 SessionFactory。

于 2009-04-15T16:34:28.717 回答