使用阿里巴巴编码规范插件,使用@Transactional
注解,如果不加rollbackFor
,会提示需要在Transactional注解指定rollbackFor或者在方法中显式的rollback
在spring项目中,@Transactional
注解默认会回滚运行时异常及其子类.,异常继承体系如下图
从图中可以看出,RuntimeException
是Exception
异常的子类
所以如果发生了Exception
异常,spring就不会帮你回滚了
解决办法@Transactional(rollbackFor = Exception.class)
在@Transactional
注解中加上rollbackFor
属性,表示回滚的异常类型,设置Exception
异常就回滚,这样不管是Exception
还是RuntimeException
,spring都能帮助我们去回滚数据了. 所以以后再类注解上加上@Transactional(rollbackFor = Exception.class)
即可.