本例模仿的是每个类映射一张表的信息,例如动物,猴子,猫,所以一共有三张表,下面是修改映射配置文件信息,其他文件如需参考,请参考我的上篇文章《hibernate中继承映射配置详细解析(二)》
Animal.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--映射文件:映射一个实体类对象,描述一个对象最终可以直接保存对象数据到数据库中 -->
<!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径)
auto-import 默认为true,在写HQL的时候自动导入包名
如果指定为false,在写HQL的时候必须要写上类的全名-->
<!--
继承映射, 所有的子类都映射到一张表
-->
<hibernate-mapping package="cn.itcast.e_extends3">
<class name="Animal" table="t_animal">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<joined-subclass name="Cat" table="t_cat">
<key column="t_animal_id"></key>
<property name="catchMouse"></property>
</joined-subclass>
<joined-subclass name="Monkey" table="t_monkey">
<key column="t_animal_id"></key>
<property name="eatBanana"></property>
</joined-subclass>
</class>
</hibernate-mapping>
总结:
一个映射文件,存储所有的子类; 子类父类都对应表;
缺点:表结构比较复杂,插入一条子类信息,需要用2条sql:往父类插入、往子类插入!