【问题标题】:Two Persistence Unit in one Persistence.xml两个 Persistence 单元合二为一 Persistence.xml
【发布时间】:2011-07-18 09:19:43
【问题描述】:

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

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

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

这是我们的 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) 中。

【问题讨论】:

    标签: java jpa persistence persistence.xml


    【解决方案1】:

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

    你需要指定一个持久化单元:@PersistenceContext(unitName="...") 在Ejb中没有

    【讨论】:

      【解决方案2】:

      您可以添加注释:

      @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 很有用,对我有帮助!

      【讨论】:

        猜你喜欢
        • 2014-08-02
        • 2011-02-27
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 2015-12-30
        • 2019-05-26
        相关资源
        最近更新 更多