【问题标题】:How to reinitialize session in Hibernate with thread context?如何使用线程上下文重新初始化 Hibernate 中的会话?
【发布时间】:2012-04-26 09:34:10
【问题描述】:

注意:这个问题与我的previous one有关。

我在我的 Hibernate 配置中使用 hibernate.current_session_context_class=thread 并根据需要通过 SessionFactory.getCurrentSession() 获取 Hibernate 会话。所以它会在需要时创建或给我现有的会话,所以我不关心这个。

这一切都很好,但是当我收到HibernateException,例如ConstraintViolationException 时该怎么办?然后我之前获得的当前会话变得无效,我不能再使用它,甚至不能读取更多数据(根据我读过的许多论坛)。如何丢弃并在特定范围内获取新会话?我认为第二次调用SessionFactory.getCurrentSession() 仍然会返回相同的无效会话!?

【问题讨论】:

    标签: multithreading hibernate session session-management


    【解决方案1】:

    对于ThreadLocalSessionContext,事务结束时会话将被关闭。所以在这种情况下,您应该调用tx.rollback(),然后调用sessionFactory.getCurrentSession() 重新开始。

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多