在常规使用@transactional注解时,如果碰到不生效问题,要首先想到如下几个问题:

  1. 如果是有关数据库操作,首先要查看牵涉到的表使用的引擎是什么引擎,要知道使用"MYISAM"数据库引擎是不支持事务回滚操作的,需要使用"InnoDB数据引擎".

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  2. 查看方法是否是public方法,如果方法是private方法,也是不支持事务的.

  3. 如果事务回滚失败还要查看出现的异常是checked异常还是unchecked异常.checked异常会回滚,unchecked异常也是不会执行回滚操作的,如果需要指定异常的回滚级别,可以使用@transactional(rollcbackFor="Exception.class")

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄