使用current_session_context_class = thread时会话关闭

时间:2012-11-25 07:25:15

标签: java hibernate session

我正在使用hibernate作为ORM,我在Hibernate配置中有以下属性:

  <property name="current_session_context_class">thread</property>

我也在使用Generic Hibernate DAO lib:http://code.google.com/p/hibernate-generic-dao

在我的应用程序(这是一个Java EE Web应用程序)中,我有一个后台线程,它定期连续运行并从数据库中获取一些数据并存储它。因此,只要有一些数据进入,我们就可以快速向用户显示。

现在问题是它只是第一次有效。当线程第一次运行时,它会关闭会话。当后台线程尝试第二次获取时,会话已经关闭,因此我收到错误。

通用DAO不允许我注入会话,但我可以注入会话工厂。 当会话工厂使用线程属性选择一个会话时,它会第二次获得一个关闭的会话。

我该如何解决这个问题?

更新:

我是否应该按照以下方式覆盖SessionFactoryImpl.java中的getCurrentSession()?

以便检查会话是否在currentSesioncontext中关闭,如果是,则返回新会话

0 个答案:

没有答案