spring boot controller設置 @Transactional 不回滾的解決辦法


1 @Transactional
2 @ApiOperation(value = "添加一個用戶信息")
3 @RequestMapping(value = "/create", method = RequestMethod.POST)
4 public RESTful create() {
5     return userService.insert(null, null);
6 }
 1 public RESTful insert(User user, Role role) {
 2     try {
 3         Date date = new Date();
 4 
 5         user = new User();
 6         user.setName("tq2");
 7         user.setAge(26);
 8         user.setCreate_at(date);
 9 
10         userMapper.insertUser(user);
11 
12         role = new Role();
13         //role.setName("role1");
14         role.setCreate_at(date);
15 
16         roleMapper.insert(role);
17 
18         return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
19     } catch (Exception ex) {
20         return new RESTful(CodeEnum.系統異常.getCode(), CodeEnum.系統異常.getMsg());
21     }
22 }

1、role表的 name 字段不可空,但並不執行回滾

 

參考:https://www.cnblogs.com/leohe/p/6673096.html?utm_source=itdadao&utm_medium=referral

實現方式一

 1  
2
@ApiOperation(value = "添加一個用戶信息") 3 @RequestMapping(value = "/create", method = RequestMethod.POST) 4 public RESTful create() { 5 try { 6 return userService.insert(null, null); 7 } catch (Exception ex) { 8 return new RESTful(CodeEnum.系統異常.getCode(), CodeEnum.系統異常.getMsg()); 9 } 10 }
 1 @Transactional
 2 public RESTful insert(User user, Role role) {
 3     try {
 4         Date date = new Date();
 5 
 6         user = new User();
 7         user.setName("tq2");
 8         user.setAge(26);
 9         user.setCreate_at(date);
10 
11         userMapper.insertUser(user);
12 
13         role = new Role();
14         //role.setName("role1");
15         role.setCreate_at(date);
16 
17         roleMapper.insert(role);
18 
19         return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
20     } catch (Exception ex) {
21         throw new RuntimeException();
22     }
23

實現方式二

1 
2 @ApiOperation(value = "添加一個用戶信息") 3 @RequestMapping(value = "/create", method = RequestMethod.POST) 4 public RESTful create() { 5 return userService.insert(null, null); 6 }
 1 @Transactional
 2 public RESTful insert(User user, Role role) {
 3     try {
 4         Date date = new Date();
 5 
 6         user = new User();
 7         user.setName("tq2");
 8         user.setAge(26);
 9         user.setCreate_at(date);
10 
11         userMapper.insertUser(user);
12 
13         role = new Role();
14         //role.setName("role1");
15         role.setCreate_at(date);
16 
17         roleMapper.insert(role);
18 
19         return new RESTful(CodeEnum.成功.getCode(), CodeEnum.成功.getMsg());
20     } catch (Exception ex) {
21         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
22         return new RESTful(CodeEnum.系統異常.getCode(), CodeEnum.系統異常.getMsg());
23     }
24 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM