1. 程式人生 > 其它 >自定義異常回滾@Transactional註解

自定義異常回滾@Transactional註解

//重點關注的是@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("分配規則修改錯誤"); } }