【SpringBoot 事务不回滚?怎么解决?】
迪丽瓦拉
2024-05-29 07:47:05
0

SpringBoot 事务不回滚可能有多种原因,下面列举一些常见的原因和对应的解决方法:

异常被捕获处理了

如果方法中抛出了异常,但是在方法中被捕获并处理了,那么事务不会回滚。解决方法是让异常继续抛出,或者使用 @Transactional 注解的 rollbackFor 属性指定回滚的异常类型。

事务方法被同类中的其他方法调用

如果事务方法被同一个类中的其他方法调用,而且这些方法没有使用 @Transactional 注解,那么事务不会起作用。解决方法是将事务方法放到一个单独的类中,或者使用 @Transactional 注解的 propagation 属性指定传播行为。

数据库引擎不支持事务

如果使用的数据库引擎不支持事务,那么事务不会起作用。解决方法是切换到支持事务的数据库引擎,比如 InnoDB。

事务方法没有被 Spring 托管

如果事务方法没有被 Spring 托管,那么事务不会起作用。解决方法是将事务方法标记为 Spring 托管的 Bean,或者使用 AspectJ 代替 Spring AOP 来管理事务。

事务注解被放错位置

如果 @Transactional 注解被放到了错误的位置,比如放到了类的属性上,那么事务不会起作用。解决方法是将注解放到方法上,或者将属性转换成方法。

总的来说,SpringBoot 事务不回滚可能有多种原因,需要根据具体情况进行排查和解决。如果无法解决,可以考虑使用调试工具和日志来进一步查看问题的具体原因。

作者:lfsun666
链接:https://juejin.cn/post/7204121228016533565
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关内容