记一次springboot事务不回滚,大坑!
文章目录
springboot事务不回滚
最近在处理一个项目升级,从hibernate升级到mybatis的时候,在升级的过程中,发现service上面的注解@Transactional没有效果(方法报错,事务没有回滚)?当时第一时间就是断点看看。如图
看图片,我们可以很清晰的查看到事务是开启了,但是为什么方法没有回滚?
当时上班的时候,真的是找的我要怀疑人生了,真的是可能快要下班了,突然灵光一现,想到了hibernate的配置文件。大坑!!!
法克尤,hibernate这里自己注册了一个事务管理器!联想到刚才的事务开启了,但是方法异常却没有回滚数据,刚好和这里吻合了。hibernate的事务,是管理不到mybatis的。刚才的service上面的@Transactional注解,引用到事务的是hibernate的。
最后的解决方案就是:修改hibernate的这里的事务名称,然后重新给mybatis注册一个新的事务,注意:新的事务bean名称,和hibernate的不要重复。
如图:
细节:注意这里加了一个@primary注解,这里的意思就是一个事务为主。后面测试发现事务可以正常回滚,搞定收工下班。