事务失败不回滚, 一般有6种情况:
-
@Transactional 注解应用到了非 public 的方法
-
rollbackFor未定义, 且异常类型不属于RuntimeException和Error(这是事务默认回滚的2种类型). 例如IOException 和 SQLException等
-
rollbackFor定义的异常类型, 不是实际报错的异常类型或其父类, 解决之道: 如果没有特殊需求, 统一设置
rollbackFor=Exception.class
即可 -
事务根本没有生效, 这种情况可以参考我另外一篇博客
spring AopContext.currentProxy() 容器注解或自定义注解不生效 -
事务传播特性设置错了, 这种情况可以参考我另外一篇博客
spring 事务运行机制全解析 -
两个事务方法的@Transactional注解的value或ransactionManager值不一样
网友评论