当前没有绑定到执行上下文的会话

2022-09-02 00:08:50

当我使用时,我得到了以下异常。session.getCurrentSession()

我提到过

hibernate.current_session_context_class: managed

org.hibernate.HibernateException: No session currently bound to execution context
    at org.hibernate.context.internal.ManagedSessionContext.currentSession(ManagedSessionContext.java:75)
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014)
    at io.dropwizard.hibernate.AbstractDAO.currentSession(AbstractDAO.java:36)
    at io.dropwizard.hibernate.AbstractDAO.persist(AbstractDAO.java:149)

我用这个与.任何人都可以帮我解决这个问题吗?dropwizard


答案 1

如果您使用的是Dropwizard Hibernate。需要向 Resource 方法添加注释。更多信息在dropwizard手册,休眠章节中。@UnitOfWork


答案 2

你可以试试 : - 它告诉休眠总是打开一个新的会话,一旦你完成了操作,你必须关闭。使用 ,休眠返回绑定到上下文的会话,您不需要关闭该上下文,只需将hibernate.current_session_context_class设置为线程。session.openSession()session.getCurrentSession()

如果您的应用程序是基于 Spring 的,则还可以使用 配置会话。SpringSessionContext

编辑您的休眠 cfg.xml如下行:

hibernate.current_session_context_class=org.springframework.orm.hibernate3.SpringSessionContext

上面的线会做什么?

将会话上下文类设置为“org.springframework.orm.hibernate3.SpringSessionContext”,Hibernate将假设它正在Spring事务上下文中执行(即通过Spring事务方面),Spring现在将为您管理您的事务。但是,如果您在此类上下文之外调用,Hibernate 将引发异常,抱怨没有会话绑定到线程。getCurrentSession()


推荐