2013-03-01 154 views
1

是否有任何会话/休眠功能重新连接/重新打开如何在会话关闭后重新打开休眠会话?

日志:严重:连接关闭后不允许任何操作。

+3

没有,你只需要打开一个新的会话/连接 – radai 2013-03-01 19:49:49

+0

如果你要提供更多的内容(当发生这种情况,什么是您所使用的框架,等等),那么有人可能能够帮助你解决你的*真实*问题。 – parsifal 2013-03-01 20:03:48

回答

3

不可以。您应该创建/打开一个新的Session

0

Hibernate Docs about Seesion

一个Sessionlifecyclelogical transaction的开始和结束边界。 (长交易可能跨越多个数据库交易。)

一旦您的transaction committed,Session将不可用。你必须创建一个新的。

+0

会话并不总是与逻辑事务连接,你作为程序员必须决定它是如何编程的 – kingkong 2013-04-02 20:14:36

1

以下是代码示例,了解如何确保会话始终有效。第2行必须重新分配会话,因为openSession会返回新会话。只是session.getSessionFactory().openSession()是不够的。

if (!session.isOpen()) { 
     session = session.getSessionFactory().openSession(); 
     session.beginTransaction(); 
} 
// operate your session 
Criteria criteria = session.createCriteria(clazz);