我有两个Service 其中一个Aservice中的方法调用另一个Bservice中的方法,
Class Aservice{
Bservice bservice
@Transactional
public void updateA(){
bservice.updateB()
//报错runtime异常抛出
}
}
Class Bservice{
public void updateB(){
//更新操作
}
}
我只在Aservice方法中加了事物,b中没有添加事物,这样如果a中方法报错,b居然没有回滚,
如果在b中添加了事物就可以回滚, 我不明白a中的事物为什么不能影响到b中回滚呢?
B如果没有受事务管理: 则线程内的connection 的 autoCommit为true。
A得到事务时事务传播特性依然生效,得到的还是B使用的connection,但是 不会改变autoCommit的属性。
所以B当中是按照每条sql进行提交的。