开发者社区> 问答> 正文

我配置的这个工程,为什么在DAO实现中SQL出错可却无法实现回滚?? 400 报错

我配置的这个工程,为什么在DAO实现中SQL出错可却无法实现回滚?? 400 报错

我按照这个配置运行了。为什么无法回滚,返回第一个insert新增进去的数据呢? 

以下spring 配置部分内容: 

Java代码    收藏代码
  1.        <!-- 事务管理配置 -->  
  2. <bean id="transactionManager"  
  3.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  4.     <property name="dataSource">  
  5.         <ref local="dataSource" />  
  6.     </property>  
  7. </bean>  
  8.   
  9. <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  10.     <tx:attributes>  
  11.         <tx:method name="insert*" propagation="REQUIRED"/>  
  12.         <tx:method name="delete*" propagation="REQUIRED"/>   
  13.                        <tx:method name="save*" propagation="REQUIRED"/>   
  14.                        <tx:method name="update*" propagation="REQUIRED"/>   
  15.     </tx:attributes>  
  16. </tx:advice>  
  17.   
  18. <aop:config >  
  19.      <aop:pointcut id="allManagerMethod"   
  20.                               expression="execution(* login.dao.impl.HelloDaoImpl.*(..))" />   
  21.                 <aop:advisor pointcut-ref="allManagerMethod"   
  22.                               advice-ref="txAdvice" />  
  23. </aop:config>  


DAO实现类目录为login.dao.impl.HelloDaoImpl.java. 
具体代码如下: 
Java代码    收藏代码
  1. package login.dao.impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import login.dao.HelloDao;  
  6. import CommUtil.dao.BaseDao;  
  7.   
  8.   
  9. public class HelloDaoImpl extends BaseDao implements HelloDao{  
  10.   
  11.     public List<?> getHello() {  
  12.         // TODO Auto-generated method stub  
  13.         return super.queryforlist("getHello"null);  
  14.     }  
  15.   
  16.     public void inserttest() {  
  17.         // TODO Auto-generated method stub  
  18.         try{  
  19.             super.getSqlMapClient().insert("insertdd",null); //这个方法sql书写时正确的会向表中增加数据。  
  20.             super.getSqlMapClient().insert("insertaa",null); //这个方法我人为造了个错误,会抛出异常进入catch。  
  21.         }catch(Exception e ){  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25.       
  26. }  

展开
收起
爱吃鱼的程序员 2020-06-03 16:37:21 345 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你都catch住了还怎么回滚啊?######先去掉try-catch的异常处理看看######我把异常放到方法上去处理也一样无法回滚######

    已经解决了。 <tx:method name="insert*" propagation="REQUIRED"/>  少了ROLLBACK.

    方法异常捕获应该在方法后不应在内部处理。如上面朋友说所。

    2020-06-03 20:51:08
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载