spring中事务不生效原因总结
spring的事务不生效原因大概分为如下几类:
一、在调用方法上虽然写了@Transactional,但捕获了异常却没有抛出
二、在sql语句用写了TRUNCATE TABLE 表(在TRUNCATE之前的sql执行完后就回被更新到数据库中,事务也就不会回滚)。
三、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起 作用。
四、事务默认是 runtimeException才会回滚(使用hibernate框架发生的sql异常spring都会抛出runtimeException)。
五、发现在加@Transactional 注解下,捕获了异常不抛出,事务也回滚了
因为被调用的方法必定有@Transactional 并且异常没有自己捕获,spring事务就会记录下该异常即使外层不抛出也会回滚。
进入manager.guarCalc()方法