Spring Hibernate - Could not obtain transaction-synchronized Session for current thread
You must enable the transaction support (<tx:annotation-driven>
or @EnableTransactionManagement
) and declare the transactionManager
and it should work through the SessionFactory
.
You must add @Transactional
into your @Repository
With @Transactional
in your @Repository
Spring is able to apply transactional support into your repository.
Your Student
class has no the @javax.persistence.* annotations how @Entity
, I am assuming the Mapping Configuration for that class has been defined through XML.
I have had the same issue, but in a class that was not a part of the service layer. In my case, the transaction manager was simply obtained from the context by the getBean()
method, and the class belonged to the view layer - my project utilizes OpenSessionInView
technique.
The sessionFactory.getCurrentSession()
method, has been causing the same exception as the author's. The solution for me was rather simple.
Session session;
try {
session = sessionFactory.getCurrentSession();
} catch (HibernateException e) {
session = sessionFactory.openSession();
}
If the getCurrentSession()
method fails, the openSession()
should do the trick.
Add the annotation @Transactional of spring in the class service