1. 父类和子类 公用一张表:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ethan.domain">
<class name="Employee" discriminator-value="0">
<id name="id">
<generator class="native"/>
</id>
<discriminator column="tyep" type="java.lang.Integer"></discriminator>
<!-- name unique -->
<property name="name"/>
<!-- departId外键参考department表 -->
<many-to-one name="depart" column="departId"/>
<subclass name="Skiller" discriminator-value="1">
<property name="skill"></property>
</subclass>
<subclass name="Sales" discriminator-value="2">
<property name="sell"></property>
</subclass>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ethan.domain">
<class name="Department">
<id name="id">
<generator class="native"></generator>
</id>
<!-- name unique -->
<property name="name"/>
<!-- 如果是delete,那么部门删除时,它下边的员工也会跟着删除 -->
<set name="emps" inverse="true" cascade="save-update">
<key column="departId"></key>
<one-to-many class="Employee"/>
</set>
</class>
</hibernate-mapping>
2.子类 各自一张表,主键参考父类主键,父类表中存放 公有字段:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ethan.domain">
<class name="Employee">
<id name="id">
<generator class="native"/>
</id>
<!-- <discriminator column="type" type="java.lang.Integer"></discriminator> -->
<!-- name unique -->
<property name="name" unique="true"/>
<!-- departId外键参考department表 -->
<many-to-one name="depart" column="departId"/>
<!-- <subclass name="Skiller" discriminator-value="1">
<property name="skill"></property>
</subclass>
<subclass name="Sales" discriminator-value="2">
<property name="sell"></property>
</subclass> -->
<joined-subclass name="Skiller" table="skiller">
<key column="emp_id"/><!-- 引用的是id -->
<property name="skill"></property>
</joined-subclass>
<joined-subclass name="Sales" table="sales">
<key column="emp_id"/><!-- 引用的是id -->
<property name="sell"></property>
</joined-subclass>
</class>
</hibernate-mapping>