我无法解决一个奇怪的问题。 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