0

我使用 JTATransactionManager 来管理事务。我想用 Spring 的@Transactional注释包装的一段代码有 2 个数据库调用——一个使用 Hibernate SessionFactory,另一个使用普通的 JDBC。两者都使用相同的数据源。因此,我希望两者都受同一个事务的约束。

但它看起来不像使用一个事务。相反,每个人都打开自己的事务。这可能是什么原因。? 如何确保使用单个事务来绑定这两个操作。?

如果需要,我可以提供配置和代码。

4

1 回答 1

0

确保在您的两个数据库调用中,您使用传播Propagation.NESTED作为

  @Transactional(propagation=Propagation.NESTED) 

在包装方法中,您提到Propagation.REQUIRED orPropagation.REQUIRED_NEW` 作为

  @Transactional(propagation=Propagation.REQUIRED)

或者

  @Transactional(propagation=Propagation.REQUIRED_NEW)

通过这样做,您提到两个数据库调用都将继承包装方法的事务边界。

于 2012-11-13T02:42:40.360 回答