Pdk*_*ock 3 java spring spring-transactions spring-data
我正在尝试使用不同的事务管理器嵌套事务,其中如果嵌套事务失败,外部主事务也需要回滚
@Transactional(transactionManager = "txManager1", propagation = Propagation.REQUIRED)
public int doOps() {
doSuccessfulDatabaseThings();
doOps2();
}
@Transactional(transactionManager = "txManager2", propagation = Propagation.REQUIRED)
public int doOps2() {
//this throws error
}
Run Code Online (Sandbox Code Playgroud)
我的 spring 配置文件有
<bean id="dataSource1" class ="com.mchange.v2.c3p0.ComboPooledDataSource">
...
</bean>
<bean id="txManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1" />
</bean>
<!-- txManager2 defined similarly -->
<tx:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)
但是,当doOps2()失败时,事务doOps()不会回滚。如何让回滚发挥作用?
大胆声明
你做错了。
根据您的描述,您需要一个ChainedTransactionManager。
为每个数据源创建一个事务管理器,然后将事务管理器传递给ChainedTransactionManager
构造函数。为 bean命名ChainedTransactionManager并在注释中引用该名称
@Transactional。我认为该属性名为“transactionManager”。例如,
@Transactional(transactionManager = "chainedTransactionManagerBeanName")
| 归档时间: |
|
| 查看次数: |
4011 次 |
| 最近记录: |