0

我在我的项目中使用的是Spring + mybatis,并且想用它@Transactional来启动事务,所以我在我的添加了一些配置代码dataSource.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
    default-lazy-init="true">

    <tx:annotation-driven transaction-manager="oracletransactionManager"/>

    <bean id="oracletransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="oracledataSourceWrite"/>
    </bean>

这是我的测试代码的一部分:

@Transactional
    public void testTransaction() throws Exception {
          // insert operation 1 without error
          // insert operation 2 with exception ,on purpose, such as some data too long for column in mysql
}

运行测试后,insert operation 1插入数据库成功,insert operation 2失败,因此Transaction不再工作,谁能帮帮我???

我在我的主要功能中测试它。

编辑: 最后,我通过使用TransactionProxyFactoryBean.

4

1 回答 1

1

你必须这样定义

@Transactional(rollbackFor=Exception.class)
于 2013-08-14T09:16:28.793 回答