自定義異常回滾@Transactional註解
阿新 • • 發佈:2022-05-23
//重點關注的是@Transactional註解和TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()
@Override @Transactional(rollbackFor = RuntimeException.class) public ServerResp<Object> updateDistributionRule(UpdateDistributionRuleRequest req) { ServerResp<Object> resp = new ServerResp<>(); try { JSONArray jsonArray = JSONArray.parseArray(req.getDistributionList()); if (null == jsonArray ){ return resp.error("分配陣列為空"); } List<TfCustomerDistributeRole> list = JSON.parseArray(jsonArray.toJSONString(), TfCustomerDistributeRole.class); for (TfCustomerDistributeRole distributeRole : list){ Integer distributeCount = tfCustomerDistributeRoleMapper.updateDistributeByStoreIdAndclerkId(distributeRole); if (distributeCount == 0){ throw new RuntimeException("修改店員分配規則錯誤,回滾");} } return resp.success("修改成功"); }catch (RuntimeException e) { //觸發強制回滾 e.printStackTrace(); logger.log(MyLogUtil.LOG_ERROR, "觸發回滾,入參:" + req + ",錯誤型別" ,e); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();return resp.error("修改店員分配規則出現錯誤"); }catch (Exception e){ e.printStackTrace(); logger.log(MyLogUtil.LOG_ERROR,"修改分配規則錯誤"); return resp.error("分配規則修改錯誤"); } }