2012-10-08 3 views
8

なし:EclipseLinkの複合永続性ユニット私の質問は、ほとんどこのスレッドで答えている<jar-file>

EclipseLink, EntityManager with two persistence units needed

しかし、私は3つの永続性ユニットを宣言するために1つのpersistence.xmlファイルを使用していたし、それがうまく働きました。しかし、今では複合パーシスタンスユニットが必要です。パーシスタンスユニットごとに別々のジャーを構築したいとは思っていません。 <jar-file>タグなしでこれを行う方法はありますか?いいえ、誰も私に単一の永続性ユニットでjarファイルを作成する方法の例を教えてもらえますか?

EDIT 1: 私は終わったが、それはまだ動作しません。この構成 - 私が得るすべては、この出力され、私はem.createNamedQueryを使用しようとすると、私は別々の永続性ユニットを持っていたとき(魔女の前に働いていました)何も起こらないコードは、createEntity行で停止し、それはthatsです。

persistence.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.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_2_0.xsd"> 
    <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <properties> 
     <property name="eclipselink.composite-unit" value="true"/> 
    </properties> 
    </persistence-unit> 
    <persistence-unit name="Minutis" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>database.entity.Entity1</class> 
    <class>database.entity.Entity2</class> 
    ... 
    <properties> 
     <property name="eclipselink.composite-unit.member" value="true"/> 
    </properties> 
    </persistence-unit> 
    <persistence-unit name="Minutis2" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>database.entity.EEntity1</class> 
    <class>database.entity.EEntity2</class> 
    ... 
    <properties> 
     <property name="eclipselink.composite-unit.member" value="true"/> 
    </properties> 
    </persistence-unit> 
    <persistence-unit name="Minutis3" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>database.entity.EEEntity1</class> 
    <class>database.entity.EEEntity2</class> 
    ... 
    <properties> 
     <property name="eclipselink.composite-unit.member" value="true"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

これはEntityManagerの作成方法です:

Map minutis = new HashMap(); 
minutis.put("javax.persistence.jdbc.user", "user"); 
minutis.put("javax.persistence.jdbc.password", "password"); 
minutis.put("javax.persistence.jdbc.driver", "driver"); 
minutis.put("javax.persistence.jdbc.url", "url"); 

Map minutis2= new HashMap(); 
minutis2.put("javax.persistence.jdbc.user", "user"); 
minutis2.put("javax.persistence.jdbc.password", "password"); 
minutis2.put("javax.persistence.jdbc.driver", "driver"); 
minutis2.put("javax.persistence.jdbc.url", "url"); 

Map minutis3= new HashMap(); 
minutis3.put("javax.persistence.jdbc.user", "user"); 
minutis3.put("javax.persistence.jdbc.password", "password"); 
minutis3.put("javax.persistence.jdbc.driver", "driver"); 
minutis3.put("javax.persistence.jdbc.url", "url"); 

Map persistanceUnitsProps = new HashMap(); 
persistanceUnitsProps.put("Minutis", minutis); 
persistanceUnitsProps.put("Minutis2", minutis2); 
persistanceUnitsProps.put("Minutis3", minutis3); 

Map props = new HashMap(); 
props.put("eclipselink.logging.level", "FINEST"); 
props.put("eclipselink.composite-unit.properties", persistanceUnitsProps); 

EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit", props); 
em = emf.createEntityManager(); 

そして、ここでは、私が手に出力されます:

run: 
[EL Finest]: 2012-10-09 09:04:43.071--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--Begin predeploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Initial; factoryCount 0 
[EL Finest]: 2012-10-09 09:04:43.099--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--property=eclipselink.orm.throw.exceptions; default value=true 
[EL Finest]: 2012-10-09 09:04:43.116--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--End predeploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Predeployed; factoryCount 0 
[EL Finer]: 2012-10-09 09:04:43.117--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--JavaSECMPInitializer - transformer is null. 
[EL Finest]: 2012-10-09 09:04:43.117--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--Begin predeploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Predeployed; factoryCount 0 
[EL Finest]: 2012-10-09 09:04:43.117--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--End predeploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Predeployed; factoryCount 1 
[EL Finest]: 2012-10-09 09:04:43.125--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--Begin deploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Predeployed; factoryCount 1 
[EL Finest]: 2012-10-09 09:04:43.128--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--property=eclipselink.logging.level; value=FINEST 
[EL Finest]: 2012-10-09 09:04:43.128--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--property=eclipselink.logging.level; value=FINEST 
[EL Info]: 2012-10-09 09:04:43.13--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--EclipseLink, version: Eclipse Persistence Services - 2.3.0.v20110604-r9504 
[EL Info]: 2012-10-09 09:04:43.138--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit login successful 
[EL Warning]: 2012-10-09 09:04:43.146--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element 
[EL Finer]: 2012-10-09 09:04:43.146--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element 
[EL Finest]: 2012-10-09 09:04:43.147--SessionBroker(2079047885)--Thread(Thread[SwingWorker-pool-1-thread-1,5,main])--End deploying Persistence Unit persistenceUnit; session file:/C:/Users/Minutis/Documents/NetBeansProjects/JavaApplication4/build/classes/_persistenceUnit; state Deployed; factoryCount 1 

EDIT 2:

私はクラスタグを使用して宣言していますが、永続性ユニットにはエンティティが表示されないという問題がありました。

+0

これに関する助力? – Minutis

+0

1つのpersistence.xmlファイルでコンポジットパーシスタンスユニットを使用する方法を知りましたか? –

答えて

0

どのようなエラーが表示されますか?それともぶら下がっているのですか?ぶら下がっている場合は、スタックトレースを取得してスタックトレースを取得する必要があります。

一般的には、それが子の永続性単位を指定する唯一の方法です。 jarファイルにクラスを入れる必要はありませんが(これが最も簡単な方法ですが)、jarファイルにpersistence.xmlファイルを置くだけです。

+0

問題は、コンポジットパーシスタンスユニットは、コンポジットパーシスタンスユニット(コンポジットパーシスタンスユニットでは動作しませんでした)で、タグを使用してそれらを宣言しても、エンティティを認識できません。出力メッセージの警告を参照してください。 – Minutis

+0

ねえ、私も同じ問題に直面しています。解決策は見つかりましたか? – Ketan

0

私は同じようなアプローチで同じ問題を抱えていますが、私は次のステップに固執しています。私は別のプロジェクトにエンティティを作成し、それをメインプロジェクトに貼り付け、最後に永続性ユニットにエンティティを含めました(persistence.xmlにあらかじめ定義していますが、実行時にデータベースを再定義しています)。その後、エンティティは認識されましたが、ユニットは少し混在していました。

関連する問題