具有传播功能的DB2 Java Spring @Transactional。REQUIRES_NEW未读取隔离。READ_UNCOMMITTED

时间:2020-11-02 19:30:59

标签: java spring hibernate db2

我无法解决一个奇怪的问题。 DB2数据库 Java Spring 4 休眠4

我有一个交易类:

public class B2BTrackingMsgProcessorImpl … {
  private GenericProcessor trackProcessor;

  @Transactional
  public void process(Message msg){ ….
      trackProcessor.process(msg);
   }
}

public class TrackingMsgProcessor …{
private ILookupUUIDXRef uuidXRefLookup;

   public void process(msg) {…
      uuidXRefLookup.getPayloadIdByUuid(uuid…);
   }

}


public interface ILookupUUIDXRef {
    PayloadIdXRef getPayloadIdByUuid(String uuid);
}

public class LookupUuidXrefImpl implements ILookupUUIDXRef {

    @Override
@Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_UNCOMMITTED)
public PayloadIdXRef getPayloadIdByUuid(String uuid) {
}

因此,类“ LookupUuidXrefImpl”创建了一个新事务,并且我想读未提交的内容。

春季环境:

<bean id="b2bTrackingMsgProcessor" class="B2BTrackingMsgProcessorImpl">
<property name="trackProcessor" ref="trackProcessor"/>
</bean>

<bean id="trackProcessor" class="TrackingMsgProcessor">
<property name="uuidXRefLookup" ref="uuidLookup"/>
</bean>

<bean id="uuidLookup" class="LookupUuidXrefImpl">
</bean>

日志显示不同的事务:

DEBUG Tra ckingMsgProcessor-TransactionStatus = org.springframework.transaction.support.DefaultTransactionStatus@fc028b62

DEBUG LookupUuidXrefImpl-TransactionStatus = org.springframework.transaction.support.DefaultTransactionStatus@a8aa0f45

但是选择查询没有“ with UR”,并且就DBA而言,它始终是CS隔离(默认)。

如何使新交易读入未提交的“ UR” ?

我看到的SQL没有“ with ur”:

select a,b,c from PAYLOAD_ID_XREF payloadidx0_ where payloadidx0_.PAYLD_UUID=?

即使春季日志显示了新交易UR:

WebSphereUowTransactionManager - Creating new transaction with name [null]: PROPAGATION_REQUIRES_NEW,ISOLATION_READ_UNCOMMITTED

0 个答案:

没有答案
相关问题