一个Persistence.xml中的两个持久性单元

我们创建了一些我们所有项目都将使用的库,这些库将提供我们所有系统的基本function(登录,管理等)。 但应用程序本身可以使用另一个数据库。

我们所做的是使用两个持久单元创建Persistence.xml。 并将所有核心库实体打包在名为“LN-model.jar”的jar中,并将所有实体中的out测试应用程序打包在“App-model.jar”中。 但由于某种原因,我们仍然获得以下信息。

无法在名为[gfdeploy#/ Users / zkropotkine / WORK / SeguridadCore / dist / gfdeploy / SeguridadCore-war_war]的模块范围内解析与persistence-context-ref-name [xxxxlistener.InicializadorListener / em]对应的持久性单元。 请validation您的申请。

这是我们的Persistence.xml

  org.eclipse.persistence.jpa.PersistenceProvider jdbc/x App-model.jar false     org.eclipse.persistence.jpa.PersistenceProvider jdbc/y LN-model.jar false   

顺便说一下,我们将Persistence.xml放在jar中,然后添加到我们的企业项目(EAR)中。

问题是JPA不知道哪个是持久性单元。 当您只有一个持久性单元时,不会发生此问题。 要修复,请执行以下操作:

你需要在Ejb中指定一个持久性单元:@PersistenceContext(unitName =“…”)

您可以添加注释:

 @PersistenceUnit(name = "x") EntityManagerFactory entityManagerFactory; @PersistenceContext(unitName = "y") EntityManager entityManager; 

或者您可以手动创建它:

 EntityManagerFactory emfA = Persistence.createEntityManagerFactory("x", properties); EntityManagerFactory emfB = Persistence.createEntityManagerFactory("y", properties); 

有关详细信息,请参阅以下链接: https : //docs.oracle.com/html/E25034_01/usingmultipledbs.htm非常有用,对我帮助过我!