1.具体表继承:每个子类一张表,如果父类不是定义为抽象的,则父类也是一张表
(1)使用<joined-subclass>标签来定义子类。
(2)父类和子类都对应一张表。
(3)在父类对应的表中,存储着所有的基本信息(父类定义的信息)。
(4)在子类对应的表中,存储着子类定义的扩展信息以及主键值(通过主键值关联查找父类表对应的基本信息)。
2.配置文件如下:
<hibernate-mapping package="包名">
<class name="父类名称" table="父类对应的表名">
<id name="id">
<generator class="native"></generator>
</id>
<property name="..."></property>
....父类的基本属性.......
<joined-subclass name="子类名称" table="子类表">
<key column="父类的主键在子类表中映射的字段名称"></key>
<property name="子类属性"></property>
</joined-subclass>
<joined-subclass name="子类名称" table="子类表">
<key column="父类的主键在子类表中映射的字段名称"></key>
<property name="子类属性"></property>
</joined-subclass>
</class>
</hibernate-mapping>
说明:
(1)<joined-subclass>name为子类的路径,table为对应的表名。
(2)该标签需要一个key标签,用来表明子类和父类是通过哪个字段来关联的,其中的column实际上就是父类的主键在子类表中映射的字段名称。
(3)该标签可以和<class>标签平行,也可是包含关系,但需加extends属性。
(4)子类的属性通过<property>定义。