我们创建了一些我们所有项目都将使用的库,该库将提供我们所有系统的基本功能(登录,某些管理等)。但是应用程序本身可以使用另一个数据库。
我们要做的是用两个持久性单元创建Persistence.xml。并将所有核心库实体打包在一个名为“ LN- model.jar”的jar中,并将所有测试应用程序的实体打包在“ App-model.jar”中。但是由于某种原因,我们仍然会收到以下消息。
无法解析名为[gfdeploy#/ Users / zkropotkine / WORK / SeguridadCore / dist / gfdeploy / SeguridadCore-war_war]的模块范围内与persistence-context-ref-name [xxxxlistener.InicializadorListener / em]对应的持久性单元。请验证您的申请。
这是我们的Persistence.xml
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="x" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <jta-data-source>jdbc/x</jta-data-source> <jar-file>App-model.jar</jar-file> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> </properties> </persistence-unit> <persistence-unit name="y" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <jta-data-source>jdbc/y</jta-data-source> <jar-file>LN-model.jar</jar-file> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties/> </persistence-unit>
顺便说一下,我们将Persistence.xml放入一个jar中,然后将其添加到我们的企业项目(EAR)中。
问题是JPA不知道要使用哪个持久性单元。当您只有一个持久性单元时,不会发生此问题。要解决此问题,请执行以下操作:
您需要在Ejb中指定一个持久性单元:@PersistenceContext(unitName =“ …”)