10.继承映射

 
Hibernate继承的设计:
Employee有两个子类:skiller和seller,
表设计在Employee表中增加一个type字段,用于标识员工的身份,再增加子类的属性.
 
 
对应的映射文件:
sell写错了,呵呵
 
< class name ="Employee" discriminator-value ="0" >
     < id name ="id" >
       < generator class ="native" />
     </ id >

     < property name ="name" />
    <!--     
    表示员工的depart属性,对应depart表中的id值,参考depart中id值表示的整个对象;
    通过反射,hibernate可以找到depart对应的department类,
    然后通过depart这个对象的id值,找到department表中的参考外键,
    缺省情况下,hibernate外键参考的对象,就是department表中的主键id.
    即:depart参考的,就是department这个表中的主键,也可以手工指定参考对象:
    使用:property-ref="xxxx",进行声明
     -->
     < many-to-one name ="depart" column ="depart_id" />
    <!-- 为Hibernate而设计,用于区分子类:说明列名:type,类型:整型,
    同时要指明type的值为多少的时候,是员工,是销售,是技术
    这里,使用discriminator-value指定员工类型:0=普通员工;1=技术;2=销售
     -->
     < discriminator column ="type" type ="int" />
    
    <!-- 子类映射声明 -->
     < subclass name ="Skiller" discriminator-value ="1" >
       < property name ="skill" />
     </ subclass >
     < subclass name ="Seles" discriminator-value ="2" >
       < property name ="sell" />
     </ subclass >
   </ class >
 
优点:查询效率高
缺点:增加子类时,需要修改映射文件,且字段不能添加非空约束.
 

你可能感兴趣的:(继承,职场,映射,休闲)