(1) 检查你是否已经开启了事务管理,创建一个config类来创建事务管理并开启,注意这里要注入dataSource
@Configuration @EnableTransactionManagement public class TransactionManagerConfiguration { @Autowired private DataSource dataSource; public TransactionManager createTransactionManager(){ return new DataSourceTransactionManager(dataSource); } }
(2) 检查是否加入Transactional注解(在方法上或者类上)
@Transactional
(3) 异常分为运行时异常和非运行时异常,如果你try()catch()了,框架默认你手动处理了异常于是不回滚,你可以在catch里加入这句话
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
(4) 回滚只针对 对数据库的操作,而不是回滚整个程序