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