项目开发时遇到的@transactional不生效问题整理
没开启@EnableTransactionManagement注解
解决方法:在启动类上添加@EnableTransactionManagement注解
多数据源没有指定事务数据源
很多项目都是多数据源项目。配置多数据源后,事务注解上没有选中数据源。
这也是我遇到的问题。
在事务注解上加上数据源。
异常不满足回滚要求
springboot默认检测RuntimeException和Error进行回滚,如果产生的异常不是这两类及其子类,springboot不会进行回滚。
解决办法:手动加上异常条件rollbackFor = {BizException.class,Error.class,RuntimeException.class}
其中 BizException extends Exception
Mysql数据库的引擎不支持
默认InnoDB支持事务。
解决办法:手动修改为InnoDB,或者在建表时选定InnoDB为默认引擎。