把事务交给Spring 管理的配置方法
<property name="hibernate.current_session_context_class">
org.springframework.orm.hibernate5.SpringSessionContext
</property>
手工管理事务的配置方法
<property name="hibernate.current_session_context_class">
thread
</property>
这种方法session谁创建,谁管理,而出现下面问题的原因就是没有管理事务,把事务交个Spring管理就ok了
解决方案:把hibernate.current_session_context_class
属性的值改为org.springframework.orm.hibernate5.SpringSessionContext
,具体版本取决于你使用的Hibernate版本,我的是5.1
Struts Problem Report
Struts has detected an unhandled exception:
Messages:
createQuery is not valid without active transaction
File: org/hibernate/context/internal/ThreadLocalSessionContext.java
Line number: 334
Stacktraces
org.hibernate.HibernateException: createQuery is not valid without active transaction
org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:334)
com.sun.proxy.$Proxy34.createQuery(Unknown Source)
com.hk.ssh.daoimpl.EmployeeDaoImpl.selectAllEmployees(EmployeeDaoImpl.java:30)
com.hk.ssh.serviceimpl.EmployeeServiceImpl.getAllEmployee(EmployeeServiceImpl.java:17)
com.hk.ssh.actions.EmployeeAction.list(EmployeeAction.java:19)
sun.reflect.NativeMethodAccesso