最後にポリモーフィックな永続化には、ルートの永続クラスの各サブクラスの定義が必要です。 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. 継承マッピング を参照してください。