Error: "Session/EntityManager is closed" when using SessionFactory.getCurrentSession()
Error: "Session/EntityManager is closed" when using SessionFactory.getCurrentSession()
我正在将我的 spring 引导项目从版本 2.5.4 更新到版本 2.6.2,这意味着 spring-boot-starter-jdbc 也更新。
现在我使用 SessionFactory
的代码在 spring boot 2.5.4 中有效,但在 2.6.2 版中无效并抛出 Session/EntityManager is closed
错误。
GenericHibernateDao.java:
public abstract class GenericHibernateDao implements GenericDao {
@Autowired
private SessionFactory sessionFactory;
public Session getCurrentSession() { return sessionFactory.getCurrentSession(); }
}
EmployeeDAOImpl.java:
public class EmployeeDAOImpl extends GenericHibernateDao {
public Employee getEmployeeByName(String name) {
Query namedQuery = getCurrentSession.getNamedQuery("getEmployeeByName");
namedQuery.setParameter("name", name);
return (Employee) namedQuery.uniqueResult();
}
}
尝试执行 return (Employee) namedQuery.uniqueResult();
行时出现错误。
从另一个组件的 @PostConstruct
调用了 getEmployeeByName
方法。
我不明白为什么会出现错误,版本之间有什么区别?
任何帮助都会得到帮助。谢谢。
异常的原因是 hibernateProperties 中的 属性。
在我删除下一行之后,一切都按预期运行:
<property name="hibernate.transaction.auto_close_session">true</property>
好像没问题因为我们用的是sessionFactory.getCurrentSession()
.
这个错误看起来像是休眠中的错误link to open bug
我正在将我的 spring 引导项目从版本 2.5.4 更新到版本 2.6.2,这意味着 spring-boot-starter-jdbc 也更新。
现在我使用 SessionFactory
的代码在 spring boot 2.5.4 中有效,但在 2.6.2 版中无效并抛出 Session/EntityManager is closed
错误。
GenericHibernateDao.java:
public abstract class GenericHibernateDao implements GenericDao {
@Autowired
private SessionFactory sessionFactory;
public Session getCurrentSession() { return sessionFactory.getCurrentSession(); }
}
EmployeeDAOImpl.java:
public class EmployeeDAOImpl extends GenericHibernateDao {
public Employee getEmployeeByName(String name) {
Query namedQuery = getCurrentSession.getNamedQuery("getEmployeeByName");
namedQuery.setParameter("name", name);
return (Employee) namedQuery.uniqueResult();
}
}
尝试执行 return (Employee) namedQuery.uniqueResult();
行时出现错误。
从另一个组件的 @PostConstruct
调用了 getEmployeeByName
方法。
我不明白为什么会出现错误,版本之间有什么区别?
任何帮助都会得到帮助。谢谢。
异常的原因是 hibernateProperties 中的 属性。 在我删除下一行之后,一切都按预期运行:
<property name="hibernate.transaction.auto_close_session">true</property>
好像没问题因为我们用的是sessionFactory.getCurrentSession()
.
这个错误看起来像是休眠中的错误link to open bug