springboot中使用@Transactional注解事物不生效的原因汇总

178 阅读1分钟

1. 手动捕获了这个异常事物不会起作用。

2.@Transaction注解只对方法名为pubic的才生效。

3. 默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就入口方法,或者类必须用@Transactional注解进行修饰。

4.@Transactional(rollbackFor = Exception.class) ,rollbackFor所指定的异常必须是发生异常的父类或者是本身。

如上无法解决,可以手动回滚

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();