5.1.17. union-subclass

5.1.17. union-subclass

3つ目の選択肢は、継承階層の具象クラスのみをテーブルにマッピングすることです (the table-per-concrete-class 戦略)。それぞれのテーブルは継承の状態を含めすべてのクラスの永続状態を定義します。 Hibernate ではその様な継承階層が必ずしも必要ではありません。単純にそれぞれのクラスを、別々の <class> 宣言を使ってマッピングすることができます。しかしポリモーフィックな関連 (例えば階層のスーパークラスへの関連) を使いたいなら、 <union-subclass> マッピングを使う必要があります。

<union-subclass
        name="ClassName"
        table="tablename"
        proxy="ProxyInterface"
        lazy="true|false"
        dynamic-update="true|false"
        dynamic-insert="true|false"
        schema="schema"
        catalog="catalog"
        extends="SuperclassName"
        abstract="true|false"
        persister="ClassName"
        subselect="SQL expression"
        entity-name="EntityName"
        node="element-name">

        <property .... />
        .....
</union-subclass>

name:サブクラスの完全修飾されたクラス名。

table :サブクラステーブルの名前。

proxy (オプション): 遅延初期化プロキシに使用するクラスやインターフェースを指定します。

lazy (オプション、デフォルトは true ): lazy="false" とすると、遅延フェッチが使用できません。

このマッピング戦略では識別カラムやキーカラムは必要ありません。

継承のマッピングに関する情報は 章 9. 継承マッピング を参照してください。