zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    JS函数浅析(一)
    H5_canvas与svg
    h5+js视频播放器控件
    【BZOJ3622】已经没有什么好害怕的了
    【9.29 模拟】T3 小清新最优化(easy)
    9.27模拟
    9.26 模拟
    4062 -- 【清华集训2012】串珠子
    【SNOI2017】炸弹
    P3216 [HNOI2011]数学作业
  • 原文地址:https://www.cnblogs.com/lidelin/p/7266280.html
Copyright © 2011-2022 走看看