三种继承表

一个子类一张表
并与主类(父类)共享主表
这种关系中,将父类单独映射到一张主表,而为子类分别单独设立一张子表,子表中只包含子类所扩展的属性,同时,子类和父类通过关系型数据库的外键关联

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
 <class name="hibernate.belle.Animal" table="t_animal"  >
    <id name="id">
         <generator   class="native"></generator>    
    </id>
    <joined-subclass name="hibernate.belle.Bird" table ="t_bird">
    <key  column="bid"></key>
    <property  name="height"></property>
    </joined-subclass>

    <joined-subclass name="hibernate.belle.Pig" table="t_pig">
    <key  column="pid"></key>
    <property   name="weight"></property>
    </joined-subclass>
 </class>      
</hibernate-mapping>

单表继承。所有类共用一张

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
 <class name="hibernate.belle.Animal" table="t_animal"  >
    <id name="id">
         <generator   class="native"></generator>    
    </id>
    <discriminator   type="string"></discriminator>
    <property name="name"></property>
    <subclass name="hibernate.belle.Bird" discriminator-value="P">
    <property name="height"></property>


    </subclass>

    <subclass name="hibernate.belle.Pig"    discriminator-value="B">
    <property  name="weight"></property>

    </subclass>


 </class>      
</hibernate-mapping>

每个具体类一张表 和join-subclass的区别就是 这里的子表会加上参照主表的列 而join-subclass只是参照 不会加到自己的表里面

注意: 这里的id不能native 因为每个具体类一张表 很有可能pig和bird 的主键id相同 所以要用assigned 手动分配id
这里的父类 animal可以将abstract设为true 表示不生成这个抽象表

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping >
 <class name="hibernate.belle.Animal" table="animal" abstract="true" >
    <id name="id">
         <generator   class="assigned"></generator>    
    </id> 

    <property  name="name"></property>
    <union-subclass name="hibernate.belle.Bird" table ="t_bird">

    <property  name="height"></property>

    </union-subclass>

    <union-subclass name="hibernate.belle.Pig" table="t_pig">

    <property   name="weight"></property>

    </union-subclass>
 </class>      
</hibernate-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值