在用Spring于Hibernate整合的时,在没有配置Spring的事物管理时。使用Hibernate进行事物进行管理时可能会出现此异常
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
原因是你没有配置Spring的事物管理,或者因为hibernate.current_session_context_class的默认值是JTA所以你无法从当前线程中获得一个Session。
解决方法有三种:
1.在Spring中配置Spring的事物管理,我们一般都会使用此种方法。
2.如果你暂时还不想配置Spring的事物管理,此时可以用SessionFactory的OpenSession()方法获得一个新的Session,而不是用getCurrentSession()方法。
3.也可以在配置文件中将hibernate.current_session_context_class的值改为Thread,此时便可以用getCurrentSession()方法从当前线程中获取Session。
本文详细阐述了在使用Spring与Hibernate整合过程中,若未配置Spring事务管理,使用Hibernate进行事务管理时可能遇到的异常,并提供了三种有效的解决策略。包括在Spring中配置事务管理、临时使用SessionFactory的OpenSession()方法获取Session以及修改hibernate配置文件中的相关参数。通过这些建议,开发者能够更高效地解决实际开发中遇到的问题。
1434

被折叠的 条评论
为什么被折叠?



