私の質問はちょっと難しいので、私はできるだけシンプルにしようと考えています。2つのパーシスタンスユニット間のHibernateリンク?
私は2つのプロジェクト:ProjectjetとProjectBを持っています。
<persistence-unit name="ProjectAUnit" transaction-type="RESOURCE_LOCAL">
<class>com.projectA.Client</class>
<class>com.projectA.InterventionA</class>
</persistence-unit>
InterventionAは、クライアントエンティティとOneToOne関係を持っています
PROJECTAは、以下のpersistence.xmlのファイルを持っています。
<persistence-unit name="projectBUnit" transaction-type="RESOURCE_LOCAL">
<class>com.projectB.InterventionB</class>
<class>com.projectB.InterventionOrder</class>
</persistence-unit>
InterventionBがInterventionAクラスを拡張(.jarファイルの依存関係に含まれている):
ProjectBのは、以下のpersistence.xmlのファイル有する
すべての3つのクラスをInterventionA、InterventionBとクライアントは、同じMySQLスキーマ(schema1)で定義されています。
BUT InterventionBは、別のMySQLスキーマ(SCHEMA2)で定義されInterventionOrderエンティティと@OneToOne関係を有しています。 プライベート介入オーダー介入者;私は次の例外を取得しています
:
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.projectA.InterventionA.client references an unknown entity: com.projectA.Client
だからここは私の質問です:私は休止状態/ Springとさえ可能達成しようとしていますなぜですか?もしそうなら、どのように? :-) ご協力いただきありがとうございます。
@ russ-hayward:回答ありがとうございます。 @OneToOne(optional = false)@JoinColumn(name = "ID_INTER")プライベート介入の介入; '次の例外が発生しました:_" com.mysql.jdbc.exceptions.jdbc4 .MySQLSyntaxErrorException:テーブル 'projectBPersistenceUnit.intervention'が存在しません "_。代わりに、ProjectAの永続ユニットに介入する必要があります。それをどうすれば実現できますか?前もって感謝します。 – kiwifrog
InterventionAはProjectBにマップされていないため、Hibernateは関連付けをマップできません。私は、Hibernateがマップされたクラスを検索して、どのクラスがInterventionを実装しているか、InterventionBのみを見つけて使用しているかを確認していると思われます。プロジェクトBのInterventionAをマッピングし、次に@OneToOne(オプション= false、targetEntity = InterventionA.class)を指定することで修正できます。それがうまくいかない場合は、誰かが解決策を知っているかどうかを確認するために新しい質問を開始することが最善の方法かもしれません。 –
あなたの答えのためのThnaks Russ。 – kiwifrog