2010-12-11 17 views
1

私は、追加のJavaライブラリである「プラグイン」を使用して拡張できるデフォルトの機能を備えたモジュール式Webプロジェクトに取り組んでいます。2同じデータベーステーブル上の2つのHibernateエンティティ。これは可能ですか?

"コア"プロジェクトは、UserテーブルにマップされるUserエンティティを認識します。 プラグインプロジェクトは、このユーザーをExtendedUserとして拡張します。これは同じテーブルにもマップされます。

両方のエンティティが共存する必要があります。ここで、Userはいくつかの列しか認識しません。

どちらのエンティティも同じクラスタに含まれる異なるライブラリで宣言されています。

これをどのようにして休止状態で動作させるのですか?

ありがとうございます!

+0

これで進歩があったのだろうかと私は思っていました。 – octav

+0

それは[あなたの質問](http://stackoverflow.com/questions/1667930/2-jpa-entities-on-the-same-table)多かれ少なかれ同じことを話してください... –

答えて

3

ExtendedUserが、Userを拡張するクラスであると仮定すると、Hibernateの "table-per-class-hierarchy"継承戦略を使用できます。 docs hereを参照してください。アノテーションを使用する場合は、InheritanceType.SINGLE_TABLEを使用します(ドキュメント2.2.4.2 hereを参照)。

+0

しかし、ユーザーはそれ自身の資格として共存し、他のエンティティによって参照されるべきです。 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)とマークされたテーブルは@Entityでマークされていないため、それ自身のIDとして認識されません。 – Toby

1

テーブルを2つのJavaエンティティ(継承スキームなし)に一度マップしようとしました。私は古いエンティティを保存しながら、いくつかの異なるマッピングを試したかっただけです。

UserとExtenderUserの両方が同じエンティティのコレクションを共有している場合X、HibernateはどのエンティティXに接続されているかを知らないと不平を言うでしょう:UserまたはExtenderUser。

私のケースでは、ボトムライン、それは動作しませんでしたし、そうでないのです。

私は継承スキームを試していませんが、あなたが言っていることから、あなたはどちらもしません。