1

我使用休眠作为 ORM,并且在休眠配置中有以下属性:

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

我也在使用通用休眠 DAO 库:http ://code.google.com/p/hibernate-generic-dao

在我的应用程序(这是一个 Java EE Web 应用程序)中,我有一个后台线程,它定期连续运行并从数据库中获取一些数据并存储它。所以每当有数据进来,我们就可以快速的展示给用户。

现在的问题是它只在第一次工作。当线程第一次运行时,它会关闭会话。当后台线程第二次尝试获取时,会话已经关闭,所以我得到一个错误。

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

我怎么解决这个问题?

更新:

我应该以下列方式覆盖 SessionFactoryImpl.java 中的 getCurrentSession() 吗?

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

4

0 回答 0