3

私は1つのjarライブラリA(またはEclipseのプロジェクト)を持っています。これには独自の永続ユニット(META-INF/persistence.xml)といくつかのエンティティクラスがあり、これを使用する別のプロジェクト(B)があります。プロジェクト B には、永続化ユニットとエンティティ クラスもあります。

プロジェクト BI では、プロジェクト A と B の両方のエンティティ クラスを使用する必要があります。ただし、「A」を永続化ユニット名として設定すると、このクエリがプロジェクト B のエンティティにある場合、EntityManager は名前付きクエリを作成できません。「B」を永続化として設定すると、ユニット名の場合、プロジェクト A のエンティティから名前付きクエリを作成できません。エラー メッセージは次のとおりです。

NamedQuery of name: MyEntityName.myQueryName not found.

永続化ユニットに他の永続化ユニットを含めることはできますか? または、この問題を解決する他の方法はありますか?

4

2 に答える 2

5

TopLink 2.3では、複合永続性ユニットが導入されました。これにより、基本的に2つ以上の実際の永続性ユニットのコンテナとしてのみ機能する永続性ユニットを作成できます。その後、この単一の複合永続性ユニットを、永続性ユニットが 1 つしかないかのようにアプリケーションで使用できます。これは、モデルをデータベースに簡単に同期できるように、persistence.xml ファイルをクリーンに保つという目標を達成する必要があります。かなりクールなもの。

于 2012-08-16T16:50:39.343 に答える
2

A が必要とするクラスを 1 つの持続性ユニットにリストし、B を必要とするクラスを別の持続性ユニットにリストできます。

<persistence ...>
    <persistence-unit name="projectA" ...>
        ....
        <class>a.Class1</class>
        <class>a.Class2</class>
        <class>a.Class3</class>
    </persistence-unit>

    <persistence-unit name="projectB" ...>
        ...
        <class>a.Class1</class>
        <class>a.Class2</class>
        <class>a.Class3</class>
        <class>b.Class1</class>
        <class>b.Class2</class>
        <class>b.Class3</class>
    </persistence-unit>
</persistence>

または、 JPA 仕様 (6.2.1.6) から引用した<jar-file>要素を使用することもできます。または、この仕様で定義されたマッピング アノテーションのデフォルトを使用してマッピングされます。このような JAR ファイルは、持続性ユニットのルートに対して相対的に指定されます (例: utils/myUtils.jar)。 "

<persistence ...>
    <persistence-unit name="projectA" ...>
        ...
        <jar-file>relative/path/to/your/library.jar</jar-file>
    </persistence-unit>
</persistence>
于 2009-11-16T14:08:29.557 に答える