Java 递归调用方法期间,Hibernate会话关闭异常
在我的应用程序中,我需要递归调用一个方法来实现需求 但是当我调用我得到的方法时Java 递归调用方法期间,Hibernate会话关闭异常,java,hibernate,recursion,Java,Hibernate,Recursion,在我的应用程序中,我需要递归调用一个方法来实现需求 但是当我调用我得到的方法时 _Exception in thread "main" org.hibernate.SessionException: Session was already closed at org.hibernate.internal.SessionImpl.close(SessionImpl.java:410) at com.cerner.core.dao.oracleImpl.test.TestRecurssionSess
_Exception in thread "main" org.hibernate.SessionException: Session was already closed
at org.hibernate.internal.SessionImpl.close(SessionImpl.java:410)
at com.cerner.core.dao.oracleImpl.test.TestRecurssionSessionClose.fact(TestRecurssionSessionClose.java:40)
at com.cerner.core.dao.oracleImpl.test.TestRecurssionSessionClose.main(TestRecurssionSessionClose.java:49)
_
我有这方面的测试代码
public class TestRecurssionSessionClose {
private SessionFactory factory;
private Session session;
private Transaction transaction;
public TestRecurssionSessionClose() {
HibernateUtil.configureSessionFactory();
factory = HibernateUtil.getFactory();
}
public int fact(int n) {
System.out.println(factory.isClosed());
session = factory.openSession();
transaction = session.beginTransaction();
try {
if (n == 1) {
return 1;
} else {
System.out.println(n);
return (n * fact(n - 1));
}
} catch (
HibernateException ex) {
if (transaction != null)
transaction.rollback();
return 0;
} finally {
if (session != null) {
session.close();
}
}
}
public static void main(String[] args) {
TestRecurssionSessionClose testRecurssionSessionClose = new TestRecurssionSessionClose();
System.out.println(testRecurssionSessionClose.fact(3));
}
}
我刚开始冬眠。请告诉我这里缺少什么?默认情况下,某些hibernate版本具有
hibernate.transaction.auto\u close\u session
到true
。这使得会话自动关闭,而无需关闭
禁用自动关闭会话或更好地使用
请参阅:默认情况下,某些hibernate版本具有
hibernate.transaction.auto\u close\u session
到true
。这使得会话自动关闭,而无需关闭
禁用自动关闭会话或更好地使用
见: