Java中方法a上有@Transactional(rollbackFor = Exception.class),其内部方法b里也有@Transactional(propagation = Propagation.REQUIRES_NEW),如果方法a有报错方法b里的事务是否会回滚
时间: 2024-03-15 11:42:16 浏览: 114
oracle 在java中的事务处理和异常回滚。
5星 · 资源好评率100%
在这种情况下,如果方法b内部的事务发生了异常,会根据事务的传播行为(Propagation)来决定是否回滚事务。
在上述情况下,方法a的事务传播行为为默认值REQUIRED,这意味着方法b的事务将会与方法a的事务处于同一事务中,如果方法b内部的事务发生异常,方法a和方法b都会回滚事务。
但是,方法b的事务传播行为为REQUIRES_NEW,这意味着方法b的事务是一个新的、独立的事务,如果方法b内部的事务发生异常,只有方法b的事务会回滚,而方法a的事务不会回滚。
需要注意的是,如果方法b内部的事务发生了异常,并且该异常被捕获并处理了,那么该异常不会被传播到方法a的事务中,因此方法a的事务也不会回滚。
阅读全文