多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 5.1.17\. 联合子类(union-subclass) 第三种选择是仅仅映射类继承树中具体类部分到表中(每个具体类一张表的策略)。其中,每张表定义了类的所有持久化状态,包括继承的状态。在 Hibernate 中,并不需要完全显式地映射这样的继承树。你可以简单地使用单独的`&lt;class&gt;`定义映射每个类。然而,如果你想使用多态关联(例如,一个对类继承树中超类的关联),你需要使用`&lt;union-subclass&gt;`映射。 ``` <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> ``` | ![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png) | `name`: 子类的全限定名。 | |:--- |:--- | | ![2](https://box.kancloud.cn/2015-10-12_561bcb768596e.png) | `table`: 子类的表名 | | ![3](https://box.kancloud.cn/2015-10-12_561bcb94ee26f.png) | `proxy` (可选): 指定一个类或者接口,在延迟装载时作为代理使用。 | | ![4](https://box.kancloud.cn/2015-10-12_561bcb9508b82.png) | `lazy` (可选, 默认是 `true`): 设置为 `lazy="false"` 禁止使用延迟装载。 | 这种映射策略不需要指定辨别标志(discriminator)字段。 更多关于继承映射的信息,参考[第 9 章 _继承映射(Inheritance Mappings)_](../Text/pr01_split_000.html "第 9 章 继承映射(Inheritance Mappings)")。