ITPub博客

首页 > > > spring事务,在循环中update出现异常回滚问题?

spring事务,在循环中update出现异常回滚问题?

作者:petterchx 时间:2019-09-26 14:26:42 0 删除 编辑

在一个有事务的方法中通过读取表记录集合,循环update或save字段值,每更新一个普通账户都要更新一次管理账户,所以要重新查询系统账户。

不知各位老师在项目中遇到这种情况怎么处理的?

这种通过读取到一个集合然后遍历update或save的方法还有什么好方案代替呢?

@Transactional(rollbackFor = Exception.class)
    public int test4()  {
        int  r= 0;
        for (int i = 0; i<10; i++) {
            try {
                //查询管理账户
                SystemAccout systemAccout = gaodeMapper.getSysAccout(1);

                //普通账户
                Gaode gao = new Gaode();
                gao.setId(i);
                gao.setAddrName("testException-save-one " + i);
                gao.setPoint(systemAccout.getPoint());
                gao.setBal(systemAccout.getBal());
                r = gaodeMapper.updateUser(gao);
                if(r > 0) {
                    //假设更新到第五条出现异常,只需回滚本次循环的所有update 或 save操作记录,继续执行不中断循环
                    if(i == 5) {
                        throw new RuntimeException();
                    }
                    //更新管理账户
                    SystemAccout sys = new SystemAccout();
                    sys.setId(1);
                    sys.setPoint(systemAccout.getPoint() -          ThreadLocalRandom.current().nextInt(10, 100));
                    gaodeMapper.updateSystemAccoutn(sys);

                }
            }catch (Exception e) {
                throw e;
            }
        }
        return r;
    }


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4606/viewspace-3128347/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: c++ ,linux ,apache
请登录后发表评论 登录
全部评论

注册时间:2019-10-24

  • 博文量
    131
  • 访问量
    30134