Finally, polymorphic persistence requires the declaration of each subclass of the root persistent class. For the table-per-class-hierarchy mapping strategy, the <subclass> declaration is used.
<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: The fully qualified class name of the subclass.
discriminator-value (optional - defaults to the class name): A value that distiguishes individual subclasses.
proxy (optional): Specifies a class or interface to use for lazy initializing proxies.
lazy (optional, defaults to true): Setting lazy="false" disables the use of lazy fetching.
Each subclass should declare its own persistent properties and subclasses. <version> and <id> properties are assumed to be inherited from the root class. Each subclass in a heirarchy must define a unique discriminator-value. If none is specified, the fully qualified Java class name is used.
For information about inheritance mappings, see Chapter 9, Inheritance Mapping.