一、把映射关系放到一张数据表上

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="com.sdkj.hibernate.domain.jicheng">
 6     <class name="Animal" table="h_animal" schema="678" discriminator-value="animal">
 7         <id name="id">
 8             <column name="id" />
 9             <generator class="native"/>
10         </id>
11         <discriminator column="type" type="java.lang.String" />
12         <property name="name" column="name"/>
13         <property name="sex" column="sex"/>
14 
15         <subclass name="Bird" discriminator-value="bird">
16             <property name="height"/>
17         </subclass>
18         <subclass name="Pig" discriminator-value="pig">
19             <property name="weight" />
20         </subclass>
21     </class>
22 </hibernate-mapping>

 

 

 

 

 

二、每个实体类创建一张表,父类拥有公共属性,子类拥有独特属性+外键约束

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="com.sdkj.hibernate.domain.jicheng">
 6     <class name="Animal" table="h_animal" schema="678">
 7         <id name="id">
 8             <column name="id" />
 9             <generator class="native"/>
10         </id>
11         <property name="name" column="name"/>
12         <property name="sex" column="sex"/>
13 
14         <joined-subclass name="Bird" table="bird" schema="678">
15             <key column="bid" />
16             <property name="height" column="height"/>
17         </joined-subclass>
18         <joined-subclass name="Pig" table="pig" schema="678">
19             <key column="pid"/>
20             <property name="weight" column="weight"/>
21         </joined-subclass>
22     </class>
23 </hibernate-mapping>

 

 

 

 三、每个实体类生成一张表,每张表都有自己的属性和父类的公共字段(了解)

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="com.sdkj.hibernate.domain.jicheng">
 6     <class name="Animal" table="h_animal" schema="678">
 7         <id name="id" type="java.lang.String">
 8             <column name="id"/>
 9             <generator class="uuid2"/><!-- hibernate5废弃了uuid 使用uuid2的话主键必须时String类型 -->
10         </id>
11         <property name="name" column="name"/>
12         <property name="sex" column="sex"/>
13 
14         <union-subclass name="Bird" table="bird" schema="678">
15             <property name="height" column="height"/>
16         </union-subclass>
17         <union-subclass name="Pig" table="pig" schema="678">
18             <property name="weight" column="weight"/>
19         </union-subclass>
20     </class>
21 </hibernate-mapping>

 

 

 

 总结