JPA多个持久化持久化单元和JTA事务



我有一个OSGi项目,其中包含多个包,其中包含JPA模型类以及相应的persistence.xml。所有的pu都使用JTA作为其事务类型,并且连接到相同的数据库(它们使用相同的DataSource)。

当操纵实体时,我使用不同的EntityManagers和一切都工作良好,只要我使用XADataSource。我现在的想法是,由于它们使用相同的数据库和相同的事务管理器,所以不应该需要XA事务。虽然如果我切换到一个普通的数据源,我开始看到不一致的情况下回滚。

我看了说明书,但找不到任何与此相关的东西。有人知道XA事务是否需要作为这种设置的一部分吗?

谢谢,菲利普

如果使用不同的持久化单元,那么每个持久化单元都有自己到数据库的连接。因此,即使您使用相同的数据源,它们也不会使用相同的事务。所以我认为这就是为什么你在回滚时可能会出现问题的原因。

在jta中,事务可以跨越不同的连接,因此它可以工作。

最新更新