0

私は自分のプロジェクトで Spring + mybatis を使用@Transactionalしており、トランザクションを開始するために使用したいので、my にいくつかの構成コードを追加します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 に答える