最后,多态持久化需要为父类的每个子类都进行声明。对于我们建议的“每一棵类继承树对应一个表”的策略来说,就需要使用<subclass>声明。
<subclass
name="ClassName"(1)
discriminator-value="discriminator_value"(2)
proxy="ProxyInterface"(3)
dynamic-update="true|false"
dynamic-insert="true|false"
extends="BaseMappedClassName"> (4)
<property ... / >
...
<subclass/>
(1) name: 子类的全限定名。
(2) discriminator-value (可选 - 默认为类名): 一个用于区分每个独立的子类的值。
(3) proxy (可选):指定一个类或者接口,在延迟装载时作为代理使用。
(4) extends (可选):指定这个子类继承的映射类。只有在使用模块化映射文件(Modular Mapping Files) 时才需要被用到。