@Transactional注解指定rollbackFor

时间:2024-04-09 07:42:29

使用阿里巴巴编码规范插件,使用@Transactional注解,如果不加rollbackFor,会提示需要在Transactional注解指定rollbackFor或者在方法中显式的rollback

在spring项目中,@Transactional注解默认会回滚运行时异常及其子类.,异常继承体系如下图
@Transactional注解指定rollbackFor
从图中可以看出,RuntimeExceptionException异常的子类

所以如果发生了Exception异常,spring就不会帮你回滚了

解决办法
@Transactional(rollbackFor = Exception.class)

@Transactional注解中加上rollbackFor属性,表示回滚的异常类型,设置Exception异常就回滚,这样不管是Exception还是RuntimeException,spring都能帮助我们去回滚数据了. 所以以后再类注解上加上@Transactional(rollbackFor = Exception.class)即可.