【发布时间】:2018-02-23 00:13:48
【问题描述】:
当我从另一个事务方法调用一个事务方法时会发生什么,现在我的第二个事务方法完成了,它在第一个事务方法中返回,不幸的是它失败了,所以它会回滚所有内容,意味着它会回滚 2nd事务方法更改..??注意:两种方法都在同一个类中
@Transactional
public void method1(){
//do something
call method2();
//do something
...
...
failed here
}
@Transactional
public void method2(){
//do something
save()
}
那么在上面的例子中,它会回滚我在第二个事务方法中保存的任何内容吗?
【问题讨论】:
-
应该只回滚 method1 中发生的事情,因为来自 method2 的事务已关闭,因此每个数据都被持久化
-
其实没有。两种方法都在同一个类中。因此,如果他的代码使用“this.method2()”调用方法2,那么所有事务注释都将无关紧要,因为根本不会调用代理对象。并且调用必须通过代理对象,以便 Spring 可以处理带有 Transactional 注释的方法调用。
标签: java spring spring-boot transactions