多个transactionManager之间的事务丢失 - Springboot 1.5.9

时间:2018-01-31 10:40:04

标签: spring transactionmanager

我遇到Spring-Boot-starter版本1.5.9-RELEASE的问题 我使用不同的CrudRepository和服务声明了多个事务管理器。 然后我用这个顺序声明@transactionnal方法:

第一次主要交易

Transactional(value = "innolaTransactionManager", readOnly = false, propagation = Propagation.REQUIRED)
 public void integrateLdFilesData() {

然后在其中调用此方法:

// Create transaction   
   DmTransaction transaction = transactionService.processTransaction(jacket.getTransactionNumber());

然后我们输入一个新方法:

@Transactional(readOnly = false, propagation = Propagation.REQUIRED, transactionManager = "dcToolTransactionManager")
 public DmTransaction processTransaction(String transactionNumber) {
  Transaction t = this.transactionRepository.findTransactionBytransactionNumber(transactionNumber);
  return this.createTransaction(t);
 }

然后我想要一个requires_new传播,但是这里我的事务永远不会在这个方法结束时提交

@Override
 @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW, transactionManager = "innolaTransactionManager")
 public DmTransaction createTransaction(Transaction transaction) {
(...)
dmTransaction = dmTransactionRepository.save(dmTransaction);
  // Create objects in database
  return dmTransaction;

我们通过登录jpa orm来调试这种情况。

我们想出的唯一解决方案是在integrateLdFilesData方法和删除第三个方法createTransaction之后直接使用requires_new更改方法processTransaction。

我认为因为我们正在以某种方式使用2 transactionManager Spring丢失的事务生命周期,即使我们放置requires_new也不会提交。

你怎么看?

0 个答案:

没有答案