11

複数の永続ユニットを利用する JavaEE プロジェクトがあります。特定の JPA エンティティが属する永続化ユニットを指定する方法はありますか? 一部のエンティティは 1 つのデータ ソースにあり、他のエンティティは 2 番目のデータ ソースにあります。注釈を使用して 2 つを区別する方法はありますか?

4

3 に答える 3

2

@PersistenceUnitも使えるはずです(まだ試していませんが)

例えば

@PersistenceUnit(unitName="persistenceUnit2")
@Entity
class XPTO {
}

Javadoc から ( http://docs.oracle.com/javaee/6/api/javax/persistence/PersistenceUnit.html )

「EntityManagerFactory とそれに関連付けられた永続ユニットへの依存関係を表します。」

unitName (オプション) persistence.xml ファイルで定義されている持続性ユニットの名前。

于 2015-07-31T16:30:13.710 に答える
1

また、エンティティを登録した EntityManager を特定することで、エンティティが属している永続ユニットを特定できます。

管理エンティティは永続コンテキストに属し、永続コンテキストは永続ユニットに属します。したがって、この例では:

@PersistenceContext(unitName="persistence-unit-1")
EntityManager em1;

@PersistenceContext(unitName="persistence-unit-2")
EntityManager em2;

em1.persist(entity1);
em2.persist(entity2);

entity1 は persistence-unit-1 に属し、entity2 は persistence-unit-2 に属します。persistence.xml で <class> タグを指定するほど明示的ではありませんが、両方の永続ユニットで同じエンティティ クラスを使用し、各エンティティ インスタンスが属するユニットを区別することができます。

于 2013-04-25T22:20:45.507 に答える