作为一项交易的一部分,我必须更新两个数据源。
- 我在DB1中进行更新。
- 然后,我在DB2中进行另一个更新。
如果DB2中的更新失败,我希望回滚DB1和DB2。是否可以使用 @Transactional 实现此操作?
以下是示例代码 -
@Transactional(value="db01TransactionManager")
public void updateDb01() {
Entity01 entity01 = repository01.findOne(1234);
entity01.setName("Name");
repository01.save(entity01);
//Calling method to update DB02
updateDb02();
}
@Transactional(value="db02TransactionManager")
public void updateDb02() {
Entity02 entity02 = repository02.findOne(1234);
entity02.setName("Name");
repository02.save(entity02);
//Added this to force a roll back for testing
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
我的问题是,updateDb02中的setRollbackOnly()只回滚了Db01的事务。