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