SpringBoot @transaction事务 for循环中的单独回滚某个循环,不影响前后循环数据操作
1
·
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
记录开发过程的碰到的问题:
SpringBoot @transaction事务 for循环中的单独回滚某个循环,不影响前后循环数据操作
提示:以下是本篇文章正文内容,下面案例可供参考
一、业务场景
业务要求循环对业务数据进行保存(更新),每个循环涉及多个表的操作,当某次循环报错时,回滚本次循环操作,不影响前面循环已保存(更新)的数据,也不影响后续循环的执行。
二、一种解决方式
通过设置回滚点的方式
public class Test{
@Transactional(rollbackFor = Exception.class)
public void method1() {
for (Object buyplanDataDTO : list) {
//设置回滚点
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
try {
this.method2();
} catch (Exception e) {
//回滚当前事务
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
}
}
}
public void method2() {
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)