码迷,mamicode.com
首页 > 数据库 > 详细

createSQLQuery is not valid without active transaction解决方法

时间:2017-11-20 13:06:52      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:thread   nsa   struts   getc   cti   存在   框架   个人   题解   

错误出现场景:

hibernate+struts2整合时,hibernate+struts2+spring(SSH)框架整合时出现

解决方案:
在我们使用hibernate框架与其他框架进行整合时,会遇到“不能在没有活动的事务中执行(org.hibernate.HibernateException: createSQLQuery is not valid without active transaction)”,我曾反复查看过自己写的代码,甚至把项目删除重新写一遍,仍然发现此问题的存在,我开始怀疑是hibernate核心配置文件的问题,立即将本地线程绑定session给注释了(hibernate.current_session_context_class),结果再启动项目,发现问题解决了

问题分析:
hibernate.current_session_context_class的值设成thread。我的理解就是将getCurrentSession()返回的session绑定到当前运行线程中。比较专业的说法是此session的上下文是thread,但不是spring已经托管的那个Session对象。所以获取的session是在spring代理的上下文之外的的当前线程之中,所以此session并非事务管理器代理的那个session,不会自动开启事务。根据官方提示:第三方框架提供了基于代理或者基于拦截器的上下文相关的会话的管理。


个人小站:http://www.xinxbk.cn
个人扣扣:4710287
欢迎与您一起交流Java开发!

createSQLQuery is not valid without active transaction解决方法

标签:thread   nsa   struts   getc   cti   存在   框架   个人   题解   

原文地址:http://www.cnblogs.com/pengyaohui/p/7865367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!