@Transactional注解事务不起作用
问题:今天在项目中碰到一个事务问题,使用@Transactional注解事务,抛出异常不会滚。
解决一:https://blog.csdn.net/u011410529/article/details/54287307
解决二:以上方案没有能解决我的问题的。
- 检查:检查是不是同一个类中的方法调用(如a方法调用同一个类中的b方法)。
- 原因:如果调用了一个类的方法a(),a()内部又调用了同类的方法b(), b()方法加了@Transactional。我们会发现@Transactional不起作用,异常抛出,事务不会回滚: x() --> T.a() --> T.b()
- 解决方案:所有涉及到事务的代码都移到Service类中,加上@Component/@Service标记,并申明为public,涉及到@Transactional的方法,都应该是public的,并且是作为最外层的方法。