2011-03-18 77 views
10

我們創建了一些我們所有項目都會使用的庫,這些庫將提供我們所有系統(登錄,管理等)的基本功能。但應用程序本身可以使用另一個數據庫。Persistence.xml中的兩個持久化單元

我們所做的是使用兩個持久單元創建Persistence.xml。並將所有核心庫實體打包在一個名爲「LN-model.jar」的jar文件中,並將所有「out-test app」實體放在「App-model.jar」中。但由於某種原因,我們仍然獲得以下信息。

無法解析對應於持久性上下文REF-名稱[xxxxlistener.InicializadorListener/EM]在被稱爲[gfdeploy#/用戶/ zkropotkine/WORK/SeguridadCore/DIST模塊的範圍持久化單元/ gfdeploy/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中在一個罐子裏的路上,我們加入到我們的企業項目(EAR)。

+0

您正在使用哪臺服務器? – Premraj 2011-03-18 19:02:07

+0

玻璃魚2.1.1 – zkropotkine 2011-03-18 20:50:44

回答

10

問題是JPA不知道哪個是要使用的持久性單元。當你只有一個持久單元時,這個問題不會發生。要解決做到以下幾點:

你需要指定一個持久性單元:@PersistenceContext(的unitName =「...」)在EJB沒有

7

您可以添加註釋:

@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 是非常有用的,對我幫助我!

相關問題