1

注意:这个问题与我之前的问题有关。

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

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

4

1 回答 1

0

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

于 2012-04-26T00:48:05.593 回答