一个数据库事务错误提示Could not obtain transaction-synchronized Session for current thread
一个数据库事务错误提示问题
使用quartz做定时器,在修改job的的时候,不能动态的添加job,添加进去的job,查询数据库的时候出错,如果是在初始化的时候加载不会有错误 ,如果直接获取就有错误了,就是通过自己写的类AppContextUtils.getBean(),执行简单的查询都有错误
- 错误信息
Could not obtain transaction-synchronized Session for current thread
困扰了我两天的问题,终于找到了
<img src="" alt="此处输入图片的描述" />http://www.swjsj.com/wp-content/uploads/2015/01/Image-1.png
一直以来以为是事务的配置问题, 知道今天debug调试的时候, 发现applictionContext.getBean获取的
service竟然没有事务代理,无数次失败后,终于发现了,这个问题了,问题就出在了这个地方,奇怪的是junit调试的时候,一点问题没有,获取的service方法,也有代理,都有自动注入的,但是web环境就没有自动注入,感觉这么获取的applicationContext好像有点问题,但不清楚问题出在哪。既然用spring注解扫描注入(@Repository 或者 @Component)不行的话, 那就直接配置文件里面写了。
就是类似这种代理,在使用注解方式初始化applicationContext的时候,就没有这些, 直接就是一个对象,也不是空的
<img src="" alt="此处输入图片的描述" />http://www.swjsj.com/wp-content/uploads/2015/01/Image-2.png
<img src="" alt="此处输入图片的描述" />http://www.swjsj.com/wp-content/uploads/2015/01/Image-3.png