1.类表映射:每个具体类一张表,父类是没有对应表的,即使有,也不存储任何记录。
(1)采用<union-subclass>标签来定义子类。
(2)每个子类对应一张表,并且存储着完整的信息:从父类继承来的属性字段+该子类扩展的属性字段(这也是和<joined-subclass>的不同之处)。
2.配置文件如下:
<hibernate-mapping package="包名">
<class name="父类">
<id name="id">
<generator class="assigned"></generator>
</id>
<property name="...."></property>
.....父类属性.....
<union-subclass name="子类名称" table="对应表">
<property name="子类属性"></property>
</union-subclass>
<union-subclass name="子类名称" table="对应表">
<property name="子类属性"></property>
</union-subclass>
</class>
</hibernate-mapping>
说明:
(1)<union-subclass>name属性为子类的路径,table为映射成的表名。
(2)该标签和<class>标签可以是平行或者包含关系。
(3)但要注意主键id的生成策略,不能是native。
(4)父类如何不生成表:<class name="父类" abstract="true">