diff --git a/org.springframework.orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java b/org.springframework.orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java index 784f7f41b34..bcf90d8bc86 100644 --- a/org.springframework.orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java +++ b/org.springframework.orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaDialect.java @@ -154,7 +154,10 @@ public class HibernateJpaDialect extends DefaultJpaDialect { } public void cleanup() { - TransactionSynchronizationManager.unbindResource(this.session.getSessionFactory()); + SessionFactory sessionFactory = this.session.getSessionFactory(); + if (TransactionSynchronizationManager.hasResource(sessionFactory)) { + TransactionSynchronizationManager.unbindResource(sessionFactory); + } if (this.previousFlushMode != null) { this.session.setFlushMode(this.previousFlushMode); }