类(Person) , 男人(Men)继承"人"类, 女人(Women)继承"人"类, UML如下:
伦理片 http://www.dotdy.com/
映射到三张表 , 每一个具体的类 映射到一张表,继承映射要求父子类的主键不能重复
t_person表 :
1 int id //主键
2 varchar name //父类中的姓名
3 int age //父类中的年龄
t_men表 :
1 int id //主键
2 varchar name //父类中的姓名
3 int age
4 varchar a //"男人"类扩展的属性
t_women表 :
1 int id //主键
2 varchar name //父类中的姓名
3 int age
4 varchar b //"女人"类 扩展的 属性
Person, Men, Women 三个类这里就不显示了,但简单, 想看了附件中有源码
Person.hbm.xml 如下:
- <?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="extends_test.extends_4" auto-import="false">
- <class name="Person" table="t_person4" >
- <!-- 父类的属性 -->
- <id name="id">
- <!-- 重点 -->
- <!-- 不能用这种主键生成器 generator class="native" -->
- <!-- class="native" 主键是自增长的, 父子类的主键会重复,但继承映射要求不能重复 -->
- <!-- 高低位生 主键生成器 -->
- <generator class="hilo"/>
- </id>
- <property name="name"/><!-- 父类的属性 -->
- <property name="age"/><!-- 父类的属性 -->
- <!-- Mem子类的映射 -->
- <union-subclass name="Men" table="t_men4">
- <!-- Men类专有的属性a -->
- <property name="a"/>
- </union-subclass>
- <!-- Women子类的映射 -->
- <union-subclass name="Women" table="t_women4">
- <!-- Men类专有的属性a -->
- <property name="b"/>
- </union-subclass>
- </class>
- </hibernate-mapping>