在常规使用@transactional注解时,如果碰到不生效问题,要首先想到如下几个问题:
1. 如果是有关数据库操作,首先要查看牵涉到的表使用的引擎是什么引擎,要知道使用"MYISAM"数据库引擎是不支持事务回滚操作的,需要使用"InnoDB数据引擎".
2. 查看方法是否是public方法,如果方法是private方法,也是不支持事务的.
3. 如果事务回滚失败还要查看出现的异常是checked异常还是unchecked异常.checked异常会回滚,unchecked异常也是不会执行回滚操作的,如果需要指定异常的回滚级别,可以使用@transactional(rollcbackFor="Exception.class")
原文地址:https://www.cnblogs.com/zjg-gwx/p/10861304.html
时间: 2024-10-11 12:51:10