图1图2图3
我的问题是要执行@Transactional时,如果另一个方法在子类里,也是要加@Transactional的对吧?
如果是业务允许可以一个执行成功,而另一个不执行成功就没问题了.
但是我这里是要求都保存成功.
一、首先@Transactional有以下几种情况是失效的,请先确定你的环境包不包括:1、@Transactional修饰了非public方法;2、@Transactional修饰的方法所属类没有被spring托管;3、@Transactional修饰的方法被当前类没有@Transactional修饰的方法调用;4、@Transactional修饰方法中指定rollbackOn回滚异常,但方法中抛出了与之不匹配的异常时;5、@Transactional修饰的方法中使用try{} catch{}捕获了异常且没有重新抛出异常(默认只针抛出Error和RuntimeException及其子类时回滚);6、@Transactional注解指定了传播方式为Propagation.NOT_SUPPORTED,即禁止事务了;7、数据库本身不支持事务(这种情况很少见)。二、针对你的问题,@Transactional修饰的方法里调用了没有被@Transactional修饰的方法时,会不会触发事务?答案是会。被调用的方法会使用父方法(即被@Transactional修饰的方法)的事务上下文,被调用的方法抛出异常会触发事务回滚!
2.1m questions
2.1m answers
60 comments
57.0k users