5.1.15. subclass

5.1.15. subclass

最後にポリモーフィックな永続化には、ルートの永続クラスの各サブクラスの定義が必要です。 table-per-class-hierarchy マッピング戦略では、 <subclass> 定義が使われます。

<subclass
        name="ClassName"
        discriminator-value="discriminator_value"
        proxy="ProxyInterface"
        lazy="true|false"
        dynamic-update="true|false"
        dynamic-insert="true|false"
        entity-name="EntityName"
        node="element-name"
        extends="SuperclassName">

        <property .... />
        .....
</subclass>

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

discriminator-value(オプション - デフォルトはクラス名): 個々のサブクラスを区別するための値。

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

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

各サブクラスでは、永続プロパティとサブクラスを定義します。 <version><id> プロパティは、ルートクラスから継承されると仮定されます。階層構造におけるサブクラスは、ユニークな discriminator-value を定義しなければなりません。 none が指定されると、完全修飾された Java クラス名が使われます。

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