执行下面的查询返回语句时,批量插入就不插数据了,注释掉后面的查询返回就正常插入数据

问题遇到的现象和发生背景

执行下面的查询返回语句时,批量插入就不插数据了,注释掉后面的查询返回就正常插入数据

问题相关代码,请勿粘贴截图
if(sub.getStation().equals("1")){
           //更新工步表
           {List<sumbmiteVO> list = pWorkOrderService.selectunitname(sub);
           if(null == list || list.size() ==0 ){
               throw new RuntimeException("没有查到工步信息,无法插入!");
           }
           List<POrderUnitStep> pOrderUnitSteps = new ArrayList<>();
           for (sumbmiteVO vo : list) {
               POrderUnitStep pOrderUnitStep=new POrderUnitStep();
               String uuid = IdentityGenerator.getUuid();
               pOrderUnitStep.setId(uuid);
               pOrderUnitStep.setUnitCode(vo.getUNITCODE());
               pOrderUnitStep.setStepCode(vo.getStepCode());
               pOrderUnitSteps.add(pOrderUnitStep);
           }
           pOrderUnitStepService.insertBatch(pOrderUnitSteps);}
           //更新检查项点表
           List<sumbmiteVO> list1= pWorkOrderService.selectstepitem(sub);
           if(null == list1 || list1.size() ==0 ){
               throw new RuntimeException("没有查到项点信息,无法插入!");
           }
          List<PStepItemRel> pStepItemRels =new ArrayList<>();
          for (sumbmiteVO item : list1){
              String uuid = IdentityGenerator.getUuid();
              PStepItemRel pStepItemRel =new PStepItemRel();
              pStepItemRel.setId(uuid);
              pStepItemRel.setUnitCode(item.getUNITCODE());
              pStepItemRel.setStepCode(item.getStepCode());
              pStepItemRels.add(pStepItemRel);
          }
           pStepItemRelService.insertBatch(pStepItemRels);
           //数据返回
           JSONObject sumbmite = new JSONObject();
           JSONObject stepinfo = new JSONObject();
           JSONObject stepinfo2 = new JSONObject();
           JSONObject stepinfo1 = new JSONObject();

           //返回工步信息
           List<sumbmiteVO> fhgb=pWorkOrderDao.fanstepcode(sumbmiteVO.getWorkOrderCode(),sub.getStation());
           if(null == fhgb || fhgb.size() ==0 ){
               throw new RuntimeException("没有查到工步信息!");
           }
           sumbmiteVO step1=fhgb.get(0);
           sumbmiteVO step2=fhgb.get(1);
           stepinfo1.put("stepName1",step1.getStepName());
           stepinfo2.put("stepName2",step2.getStepName());

           //返回项点信息
           JSONArray array = new JSONArray();
           List<sumbmiteVO> list2=pWorkOrderDao.fansitem(sumbmiteVO.getWorkOrderCode(),sub.getStation(),step1.getStepName());
           if(null == list2 || list2.size() ==0 ){
               throw new RuntimeException("没有查到项点信息!");
           }
           for (sumbmiteVO jcxd : list2) {
               JSONObject item = new JSONObject();
               item.put("ItemCode",jcxd.getItemCode());
               item.put("ItemName",jcxd.getItemName());
               array.add(item);
           }

           //工具返回
           JSONArray gongju = new JSONArray();
           List<sumbmiteVO> list3=pWorkOrderDao.fangongju(sumbmiteVO.getWorkOrderCode());
           if(null == list3 || list3.size() ==0 ){
               throw new RuntimeException("没有查到工具信息!");
           }
           for (sumbmiteVO gj : list3) {
               JSONObject item = new JSONObject();
               item.put("item_type",gj.getItemType());
               item.put("TOOL_CODE",gj.getTOOLCODE());
               gongju.add(item);
           }
           stepinfo1.put("TOOlist",gongju);
           stepinfo1.put("itemList" ,array);
           stepinfo.put("stepinfo1",stepinfo1);
           stepinfo.put("stepinfo2",stepinfo2);
           sumbmite.put("stepinfo",stepinfo);
           return sumbmite;
       }

运行结果及报错内容

直接运行没有任何报错 批量插入也正常执行(运行日志显示update:1)实际没有插入数据

我的解答思路和尝试过的方法

把批量插入后面的语句注释掉后,数据库便有数据插入

我想要达到的结果

抛出异常 事务回滚了

  1. 个人建议,加上断点,看看到底是哪里出现了问题,导致了这种异常。一步步断点去找。

  2. 从开发角度上,不建议你的这种写法,建议还是使用事务来处理,批量执行的语句放在一个事务中之行。这样,当有异常时候,可以回滚,不会造成脏数据的产生。