wearefamulei 2020-04-21 17:33 采纳率: 0%
浏览 1548
已采纳

spring设置手动回滚不生效(setRollbackOnly),数据还是入库了。

spring设置手动回滚不生效(setRollbackOnly),数据还是入库了,代码如下。

@Transactional
  public void executeDataMigration() {
    try {
      for (int i = 1; i < 10; i++) {
        insertA(i);
      }

    } catch (Exception e) {
      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    }
  }

  public void insertA(int id) {
    String sql = "insert tableA(id, code, name) values (?, ?, ?)";
    dao.executeBySql(sql, new Object[] {id, "123", "小花"});
    String a = null;
    a.toString();
  }

上面代码,捕获异常后加了手动回滚,结果数据还是入库了,请问应该怎么写,才能让数据insertA发生错误后回滚,但是又不能影响for循环的下一次执行。

比如我要循环10次,有2次失败,8次成功,那么数据库的最终数据要为8条,请问怎么能做到呢。

  • 写回答

1条回答 默认 最新

  • 巡山小妖008 2020-04-21 18:47
    关注

    开启@EnableAspectJAutoProxy(exposeProxy = true)

    AopContext.currentProxy()).insertA();

    可以参考https://www.cnblogs.com/nxzblogs/p/10503889.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决