【Hibernate】【事务】【AOP】报错:Could not obtain transaction-synchronized Session for current thread。

今天在公司遇到一个问题:定时任务调用Task类时,报错:Could not obtain transaction-synchronized Session for current thread

这个问题之前遇到过,当时的定时任务使用的@Scheduled注解,也出现了这个问题。当时是采用在类上添加@Tratrational注解来规避,也成功了。后来项目定时任务框架升级,改用新的框架后,原来的Task任务又开始报这个错误,试了很多方法没有解决。

最后问题定位到:Task类没有加入事务切面的扫描,导致该Task类出现事务问题。项目配置里是将多个包下的Service、serviceImpl和dao层添加到切面扫描当中。由于我这个类是新增的,配置文件没有更新,并且业务逻辑都是写在Task类中,涉及到业务逻辑那块没有加入事务切面导致的问题。

修改办法:将业务逻辑从Task中抽取出来,放在已添加切面扫描的serviceImpl这样就可以规避这个事务问题。

另外,也可以在配置文件中excute表达式中将Task类添加进去,但是不推荐,因为并不具有代表性。

至于为什么原来没有给Task类配置切面也能执行成功,待研究,可能与@Scheduled和@Tratrational组合使用有关。

相关的技术知识,后续更新在该博文中,先记录下该问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值