1

Note: This question is related for my previous one.

I am using hibernate.current_session_context_class=thread in my Hibernate configuration and getting Hibernate sessions via SessionFactory.getCurrentSession() as needed. So it does create or give me existing sessions when needed, so I do not take care of this.

This is all great, but what to do when I do get a HibernateException, a ConstraintViolationException for example? Then the current session I acquired before becomes invalid and I cannot use it anymore, not even for reading out some more data (according to many forums I've read). How can I discard and get then the new session within particular scope? I think calling SessionFactory.getCurrentSession() for the 2nd time still will return me the same invalid session!?

Community
  • 1
  • 1
Laimoncijus
  • 8,615
  • 10
  • 58
  • 81

1 Answers1

0

For the ThreadLocalSessionContext, the session will be closed when the transaction finsihes. So in this case you should call tx.rollback(), then sessionFactory.getCurrentSession() to start afresh.

sharakan
  • 6,821
  • 1
  • 34
  • 61