spring中事务不生效原因总结

spring的事务不生效原因大概分为如下几类:

   一、在调用方法上虽然写了@Transactional,但捕获了异常却没有抛出

     

   二、在sql语句用写了TRUNCATE TABLE  表(在TRUNCATE之前的sql执行完后就回被更新到数据库中,事务也就不会回滚)。

     

  三、@Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起          作用。

  四、事务默认是 runtimeException才会回滚(使用hibernate框架发生的sql异常spring都会抛出runtimeException)。

  五、发现在加@Transactional 注解下,捕获了异常不抛出,事务也回滚了

         因为被调用的方法必定有@Transactional 并且异常没有自己捕获,spring事务就会记录下该异常即使外层不抛出也会回滚。

     

      进入manager.guarCalc()方法   

 

posted @ 2018-07-23 21:52  miss小张  阅读(1536)  评论(0编辑  收藏  举报