我使用JTATransactionManager来管理交易。我要用Spring @Transactional
注释包装的一段代码有2个数据库调用 - 一个使用Hibernate SessionFactory,另一个使用普通JDBC。两者都使用相同的dataSource。因此,我希望两者都受同一个交易的约束。
但它看起来并不像是使用了一个Transaction。而是每个人都打开自己的交易。这可能是什么原因。 ?如何确保使用单个事务来绑定这两个操作。 ?
如果需要,我可以提供配置和代码。
答案 0 :(得分:0)
确保在两个数据库调用中,将传播用作Propagation.NESTED
@Transactional(propagation=Propagation.NESTED)
在包装器方法中,你提到Propagation.REQUIRED or
Propagation.REQUIRED_NEW`为
@Transactional(propagation=Propagation.REQUIRED)
或
@Transactional(propagation=Propagation.REQUIRED_NEW)
通过这样做,您提到两个DB调用都将继承包装器方法的事务边界。