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

shuke77 发布于 2013/02/26 20:58
阅读 275
收藏 0

我按照这个配置运行了。为什么无法回滚,返回第一个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. }  

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

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

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

返回顶部
顶部