Hibernateはインターフェースをマップできます-
編集 :コメントの質問に答える:
データベースレベルでは、Taggable
が必要です。 Tag.References
のテーブル 外部キーで参照します。
-
ポリモーフィズムが自動的に追加された場合、ディスクリミネーターはポリモーフィズムを無効にしません。たとえば、階層ごとのテーブルマッピングでは、Hibernate/Gormが
class
を追加します。 dbからオブジェクトを読み取るときに具象クラスを見つけるためのフィールド。 -
Taggable
をマッピングする場合 sから2つのテーブル-Taggable
Taggable
の一部 その他はすべて、1:1で参照される特定のテーブルにあります。すべてのディスクリミネーターの作業は、Hibernateによって実行される必要があります。
BTWclass
フィールドはかなり長いです-完全に修飾されたクラス名が含まれています 。
編集2 :どちらの方法でも、かなり複雑になっています。私は、別の質問で提案したアプローチを個人的に採用します。 :
- Taggableインターフェースを使用してすべてのクラスに
hasMany=[tags:Tag]
を動的にクエリします プロパティ; - または、あまり好ましくありませんが、手作りのチャイルドテーブルとディスクリミネーターを用意することです。