Вопрос

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!?

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top