I am getting error:
Exception in thread \"main\" org.hibernate.HibernateException:
Could not obtain transaction-synchronized Session for current thread
I had same error as "org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread"
I just used @Transactional(readOnly = false) in my Dao implementation resolved my issue
The error org.hibernate.MappingException: Unknown entity: ProductPart indicates there is no entity with name ProductPart. One way to fix this issue is to pass the Class object to createCriteria method as:
createCriteria(ProductPart.class)
From API the difference in using String and Class is as follows:
Session.createCriteria(String)
Create a new Criteria instance, for the given entity name.
Session.createCriteria(Class)
Create a new Criteria instance, for the given entity class, or a superclass of an entity class, with the given alias.
If you pass a String then hibernate looks for an entity whose name is declared as ProductPart.
With Hibernate 4.x and Spring 4.x, just Add @Transactional after @Repository it will solve this synchronizaion exception.
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.
Ref