为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕粉3557681 2018-07-04 16:51:26
@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; }在一个有事务的方法中通过读取表记录集合,循环update或save字段值,每更新一个普通账户都要更新一次管理账户,所以要重新查询系统账户。不知各位老师在项目中遇到这种情况怎么处理的?这种通过读取到一个集合然后遍历update或save的方法还有什么好方案代替呢?
查看完整描述

1 回答

?
慕勒0069038

TA贡献143条经验 获得超39个赞

update select结合语句了解一下?

查看完整回答
反对 回复 2018-07-06
  • 1 回答
  • 0 关注
  • 1096 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信