【问题标题】:Spring Boot @Transactional Attribute with Multiple DataSource具有多个数据源的 Spring Boot @Transactional 属性
【发布时间】:2020-06-21 09:33:47
【问题描述】:

嗨,我有两种不同的方法,它们使用不同的数据源和事务管理器。我使用 @Transactional 属性和我想要的,如果我的第二个方法抛出异常而不是我的第一个方法回滚。但它不起作用,第一个方法不能回滚。我错过了什么?

  @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED, transactionManager = myTransactionManager", propagation = Propagation.REQUIRED)
    public void saveTest(TblTest testEntity)  {

  mySecondDBSource.saveTest2(testEntity);(use MyTransactionManager2) //Do job

  testTableRepository.save(testEntity); (Use myTransactionManager) //throws Exception

}




//in mySecondDBSource class there is another method
      @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED, transactionManager = "MyTransactionManager2", propagation = Propagation.REQUIRED)
        public void saveTest2(TblTest2 testEntity) {

            testTableRepository2.save(testEntity);

        }

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa


    【解决方案1】:

    Spring Data 提供了一种通过ChainedTransactionManager 处理所谓的链式/分布式事务的方法。

    spring-transactional-with-a-transaction-across-multiple-data-sources

    这里也是medium的简单指南。

    【讨论】:

    • 是的,它正在工作。是最好的方法还是不同的解决方案?问候
    • 到目前为止,我没有使用“弹簧方式”跳过任何其他解决方案。
    • 这篇文章也可能很有用:metamorphant.de/blog/posts/…
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2016-08-27
    • 2014-12-06
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2015-07-01
    相关资源
    最近更新 更多