web-dev-qa-db-ja.com

1つのpersistence.xml内の複数のpersistence-unitタグ

現在、JPA 2.0プロジェクト(Eclipse Indigo内)を使用しています。使用する2つの異なるデータベースがあるため、persistence.xmlファイルで2つの<persistence-unit>タグを指定する必要があります。これを行うと、次の警告が表示されます。

複数の永続性ユニットが定義されています-最初の永続性ユニットのみが認識されます

さらに、エンティティを作成して2番目の<persistence-unit>に配置すると、エンティティがpersistence-unitで宣言されていないというエラーが表示されます。

クラス「my.package.MyClass」はマップされていますが、永続性ユニットには含まれていません

したがって、問題は、persistence.xmlファイルで多くの<persistence-unit>タグを宣言(および期待どおりに使用)することは可能ですか?はいの場合、正確な動作を得るために何をする必要がありますか?

ありがとう!

32
artaxerxe

JPAは、persistence.xmlで定義された永続性ユニットの数を制限しません。この警告は、Eclipse IDEのツールの制限について説明しているだけです。これは、例えばここで伝えられます http://www.Eclipse.org/webtools/dali/gettingstarted.php

現在、Daliはプロジェクトごとに1つの永続性ユニットと1つの永続性XMLファイルのみをサポートしています。 JPAプロジェクトには他の構成も存在できますが、複数の永続性ユニットが使用されている場合、検証とデフォルトの処理が正しく行われない場合があります。

Eclipse IDEでこの作業を行う既知の方法はないと思います。

42
Mikko Maunu

これはJPAに有効ですが、次のように入力して、プロジェクトごとに(煩わしい)エラー通知をオフにすることもできます。

Project Properties => JPA => Errors/Warnings

Enable project specific settingsをアクティブにし、Typeの下でClass is mapped but is not in a persistence unitの通知レベルをErrorから適切なものに変更します。

Eclipse Lunaの更新:

Lunaで設定の場所と名前が変更されました。新しい場所は次のとおりです。

Project Properties => JPA => Errors/Warnings

チェックEnable project specific settings

Projectグループを展開します

Multiple persistence units defined:Ignoreに変更します。

enter image description here

29
VH-NZZ