我在项目中使用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
更改了另一种交易方式。
答案 0 :(得分:1)
你必须像这样定义
@Transactional(rollbackFor=Exception.class)