代码结构这是一个调用第三方接口的方法
rollback=“Exception.class”
总方法{
调用其他方法
操作数据库
}
rollback=“Exception.class”
其他方法{
操作数据库
}
我的问题是
1.如果在其他方法出现错误会触发哪个回滚
2.总方法出现错误触发回滚,回滚的包括其他方法中操作的数据库数据吗
首先明确一个前提,调用总方法,调用其他方法都是用的spring注入的对象来调用的
如果在其他方法中出现异常,会触发其他方法的回滚。
如果在总方法中出现异常,会触发总方法的回滚。如果你希望回滚包括其他方法中操作的数据库数据,则需要在其他方法中也添加回滚注解,并将其他方法调用放在同一个事务中。
例如:
@Transactional(rollbackFor=Exception.class)
public void mainMethod() {
// 调用其他方法
otherMethod();
// 操作数据库
...
}
@Transactional(rollbackFor=Exception.class)
public void otherMethod() {
// 操作数据库
...
}
在上述代码中,如果在其他方法或总方法中出现异常,就会触发回滚,并回滚其他方法中操作的数据库数据。
看你调用其他方法的方式,如果导致事务失效了就只能触发总方法的回滚,总方法回滚会回滚其他方法内的数据操作,但前提是你用的是默认的事务传播
1.如果在其他方法出现错误 会触发其它方法的回滚方法
2 .总方法出现错误触发回滚 会回滚总方法中涉及到的数据,包括其它方法的
望采纳
1.如果在其他方法出现错误会触发哪个回滚
其他方法是指其他服务的方法,如果你没有分布式事务,只能触发其他方法那里的数据库回滚
2.总方法出现错误触发回滚,回滚的包括其他方法中操作的数据库数据吗
跟第一个问题一样,没有分布式事务保证,就只会回滚总方法的数据库