spring Transactional 抛异常事务不会回滚

在service层操作多张表时,加上@Transactional,尝试用 try catch来捕获异常,原本以为这样写会实现同一事务中某一个发生异常时,其他操作都会得到回滚

 1  @Transactional(rollbackFor=Exception.class)
 2     @Override
 3     public JSONObject delFywsjManages(HttpServletRequest request, HttpServletResponse response){
 4         JSONObject json = new JSONObject();
 5         String params = request.getParameter("params");
 6         String ywid = JSONUtil.getJSONString(params, "ywid");//业务id
 7         String quiz = JSONUtil.getJSONString(params, "quiz");//业务类型
 8         if(StringUtils.isBlank(ywid) || StringUtils.isBlank(quiz)){
 9             json.put("code",1);
10             json.put("message","参数不能为空");
11             return json;
12         }
13         try {
14             int result = 0;
15             switch (quiz.trim()){
16                 case "sl"://申领
17                     String applyId = fywsjManagesMapper.getApplyBakByApplyId(ywid);
18                     if(StringUtils.isBlank(applyId)){
19                         result = fywsjManagesMapper.insertApplyBak(ywid);
20                         if(result != 0){
21                             //1.apply_info 主表 id
22                             fywsjManagesMapper.deleteApplyInfo(ywid);
23                             //2.apply_acceptance 受理表 applyId
24                             fywsjManagesMapper.deleteApplyAcceptance(ywid);
25                             //3.apply_check 审查意见 applyId
28                             fywsjManagesMapper.deleteApplyCheck(ywid);
29                             //4.apply_decide 决定 applyId
30                             fywsjManagesMapper.deleteApplyDecide(ywid);
31                             //5.apply_transaction 办结 applyId
32                             fywsjManagesMapper.deleteApplyTransaction(ywid);
33                             throw new RuntimeException();
34                         }
35                     }else{
36                         json.put("code",1);
37                         json.put("message","当前申领信息在备份表中已存在,备份失败");
38                         return json;
39                     }
40                     break;
41                 case "hl"://换领
42 
43                     break;
44                 case "bl"://补领
45 
46                     break;
47                 case "zj"://增驾
48 
49                     break;
50                 case "zc"://转出
51 
52                     break;
53                 case "zr"://转入
54 
55                     break;
56                 case "hf"://恢复
57 
58                     break;
59             }
60         }catch (Exception e){
61             json.put("code",1);
62             json.put("message","删除失败");
63             throw new RuntimeException();
64         }finally {
65             return json;
66         }
67     }

猜你喜欢

转载自www.cnblogs.com/yjava/p/12010100.html