2017-10-26 8 views
0

私はpersistence.xmlでエンティティと2つのJAR-ファイルを持っている:複数の休止Enversリビジョンエンティティ

<jar-file>/lib/model.jar</jar-file> 
    <jar-file>/lib/central-model.jar</jar-file> 

中央model.jarはmodel.jarにsubclasssedされているいくつかのエンティティが含まれています。

central-model.jarはCRUDアプリケーションの一部であり、リビジョンエンティティが必要です。

model.jarもCRUDアプリケーションの一部であり、リビジョンエンティティも必要です。

テーブルは、異なるスキーマにあり、データバーリンクによってリンクされています。 パーシスタンスユニットは1つしかありません。

の展開は、次のエラーにつながる:

Caused by: org.hibernate.AnnotationException: Use of the same entity name twice: REVISIONEN 

は誰がこのような問題に遭遇していますか? どのように解決しましたか?

+1

したがって、model.jarとcentral-model.jarの両方に改訂エンティティが含まれていますか? – Wabi

+0

はい、そうです。リビジョン - model.jarのエンティティは、あるデータベーススキーマ内のabテーブルを指し、central-model.jarのリビジョンエンティティは別のデータベーススキーマを指します。 – sws

+0

あなたの返信をありがとうございました。 @Narosが想定しているように、私は '@RevisionEntity'を扱っています。残念ながら、私は中央モデルからモデルにサブクラス化するので、2つのPersistencContextは不可能です。私はこれのために別の解決策を探さなければならないようだ。 – sws

答えて

0

あなたはHibernateが、それらの間の違いを確認できるようにするために、両方のJARファイルにエンティティ名を上書きする必要があります。model.jarで

:中央model.jarで

@Entity(name="prefixA.Revision") 
public class Revision {} 

@Entity(name="prefixB.Revision") 
public class Revision {} 
クエリで

は、使用:

createQuery("from prefixA.Revision") 
1

リビジョンエンティティという用語を使用するときの意味合いによって異なります。

あなたの質問にhibernate-enversというタグが付いているとすれば、@RevisionEntityと注釈されているエンティティを指しているとします。それが正確であれば、少なくとも1つの持続性ユニット内には記述できません。

複数の@RevisionEntityアノテーション付きクラスをサポートする唯一の方法は、それらを独自の永続性単位に分離することです。

上記を参照しておらず、同じ名前でクラスが異なる2つのエンティティがあるシナリオについて説明している場合は、@Wabiのアドバイスに従い、それぞれに固有の名前を付ける必要がありますHibernateがそれらを区別できるようにします。

関連する問題