码迷,mamicode.com
首页 > 编程语言 > 详细

spring事务没回滚

时间:2017-07-31 23:57:56      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:ogg   logger   异常   back   runtime   run   port   一个   spring   

      最近遇见一个问题,用spring管理实务,在service层处理数据,保存数据时出现异常,但没有回滚,检查了一下,发现是因为我用try catch将异常进行捕获了,没有抛出导致的;默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。 

处理发法一:捕获异常后,新生成runtimeexcetpion;

  1. try {          
  2.         userDao.save(user);          
  3.         userDao.update(user);         
  4.        } catch (Exception e) {         
  5.         logger.info("异常信息:"+e);          
  6.         throw new RuntimeException();   
  7.           }     

 

 处理方法二:捕获异常后,添加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()手动回滚

  1. try {          
  2.         userDao.save(user);          
  3.        userDao.update(user);        
  4.     } catch (Exception e) {          
  5.         logger.info("异常信息:"+e);          
  6.         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();         
  7.     }  

处理方法三:不用try   catch进行捕获;出现异常的方法会被spring管理而进行回滚

         1.       userDao.save(user); 

         2.       userDao.update(user);

 

spring事务没回滚

标签:ogg   logger   异常   back   runtime   run   port   一个   spring   

原文地址:http://www.cnblogs.com/lidelin/p/7266280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!