spring中@Transactional事务,手动回滚时未进行回滚

新手上路,请多包涵

一个类中

public class ATest {
@Transactional(rollbackFor = Exception.class)
public Result a() {
    //调用删除方法
    del()

    //调用添加
    add();

    //调用添加时方法时,出现问题手动返回(不是抛出异常),但是对之前删除的数据要进行退回
    if (!add().isOk()) {
     //手动回退
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
    return Result("错误");
 }
return Result("成功");
    
}

@Transactional(rollbackFor = Exception.class)
public Result del() {
    //调用删除数据库数据
}

@Transactional(rollbackFor = Exception.class)
public Result add() throws Exception {
      //调用添加数据库数据
}   

}

问:
在上述过程中,先调用删除方法,再调用添加时方法时(出现问题手动返回),对之前删除的数据要进行退回。但是后续进行的手动退回方式却没有将之前删除的数据回退成功,这种情况要如何处理?

阅读 2.1k
1 个回答

我看了下你精简的代码
image.png
你的add()相当于执行了两遍你要确保你的Result是同一个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题