当前位置: 代码迷 >> Java Web开发 >> spring @Transactiona事务不回滚有关问题
  详细解决方案

spring @Transactiona事务不回滚有关问题

热度:124   发布时间:2016-04-13 22:44:32.0
spring @Transactiona事务不回滚问题
applicationContext.xml 配置如下

<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
  </bean> 

<context:annotation-config />
    <context:component-scan base-package="com.base" />


<!-- 数据事务配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用annotation定义事务   -->
<tx:annotation-driven transaction-manager="transactionManager"/>
 
<bean id="db_default"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>



java代码如下:

JdbcTemplate jtc=(JdbcTemplate) SpringBeanUtil.getBean("db_default");
public void execute(Tuple input, BasicOutputCollector collector) {
Backup("258");
}

@Transactional(rollbackFor=Exception.class) 
public void Backup(String pkId){

String sql1="insert ....";
String sql2="insert ....";

jct.update(sql1, param);
jct.update(sql2, param); 

}



sql2发生错误时,sql1的记录还是插入了,没有回滚,帮忙看看哪里有问题?
------解决思路----------------------
把那个要回滚的方法放到service中!!!!!
  相关解决方案