假设我有以下两个班级。
class A {
private B b;
@Transactional
public void a(){
b.b();
//do a stuff
throw new RuntimeException("oops");
}
}
class B {
@Transactional
public void b(){
//do b stuff
}
}
在这种情况下,方法b()
(或b东西)也会被回滚吗?
答案 0 :(得分:3)
在您的情况下,它将被回滚。
如果您的B b;
由Spring自动连接(在您的情况下似乎不是)并且@Transactional
方法上的b()
已传播REQUIRES_NEW(目前默认为 - REQUIRE),这意味着不使用现有事务但是启动一个新事务,只有在这种情况下才会回滚b()
上的提交。