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