1、访问权限问题
Spring要求被代理方法必须为public,否则事务不生效。
2、方法用final修饰
Spring要求被代理方法必须不是static和final
3、方法内部调用
在同一个类中的方法,直接调用会使事务失效。
4、未被Spring接管
忘记加@Service注解
5、多线程调用
Spring的事务是根据数据库连接实现的,不同线程连接的数据库线程池的对象不同,所以无法实现事务。
6、表不支持事务
老版本MYSQL默认是Myisam,不支持事务
7、未开启事务
8、错误的传播特性
9、自己吞了异常
10、手动抛了其他的异常
11、自定义了回滚异常
12、嵌套事务回滚