0

我有 DB1、DB2。我为两个数据库(在同一台物理机器内)配置了两个DataSource和两个。PlatformTransactionManager我有这个代码:

@Transaction("DB1")
public void A() {
    B();
}
@Transaction("DB2")
public void B() {
}

B()有时SqlException,DB1 中的数据没有回滚。如何实现回滚 DB1?非常感谢。

4

1 回答 1

0

@Transaction 注释有一个属性rollbackFor@Transaction(value = "DB1", rollbackFor = SqlException.class)例如)可以满足您的需求。

但是,实际上只有一个事务会在您的代码中使用,因为B它不是通过 Spring 代理而是通过内部调用 ( this.B()) 调用的。要在单独的事务方法中执行方法,必须通过 Spring 代理调用 -someService.B()而不是this.B().

于 2018-01-07T17:33:59.843 回答