Hibernate:ThreadLocalSessionContext:已经调用bind()的会话绑定

时间:2009-04-03 00:48:02

标签: hibernate struts hibernate-session

当我尝试以下列方式使用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的文件,并确保明确关闭这些会话。有没有办法监控会话绑定到会话工厂的时间?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

您必须明确调用ThreadLocalSessionContext.unbind(sessionFactory)取消绑定会话。否则,即使会话关闭,它仍然会保持绑定到SessionFactory。