hibernate继承映射

我的例子中父类都设为抽象类。一般类没有测试

---------------------------------普通继承映射----------------------------

每个子类映射一张表,父类没有表:只需要写子类的hibernate的映射配置文件就行。

注意:通过父类查询数据库时   必须写父类的全名(类名+包名)

<class name="类名" table="表名">
        <!-- 简单继承映射: 父类属性直接写 -->
        <id name="主键">
            <generator class="主键生成策略"></generator>
        </id>
        <property name="属性名(包括父类的属性名+子类的属性名)"></property>                    
    </class>

--------------------------------不简单继承映射-----------------------------------------

所有子类映射到一张纸:(使用情况:子类多,并且每个子类属性极少)需要区分每个子类

         数据库多一个字段来标记/区分子类(不推荐)

<class name="父类类名">

<!--注意:一定要指定鉴别器字段,否则报错!
                鉴别器字段:作用是在数据库中区别每一个子类的信息, 就是一个列
                    discriminator-value="鉴别器字段名"
                指定鉴别器字段,即type_字段的值
                如果不指定,默认为当前子类的全名
-->

<subclasss   name="子类类名">

        <property>属性

</subclass>

</class>

 

 

每个类都映射一个表(包括子类+父类)

<class name="父类名" table="父类表名">
        <id name="主键">
            <generator class="生成策略"></generator>
        </id>
        <property name="父类属性"></property>     
            <!--key 指定子类表的外键字段-->
        <joined-subclass name="子类名" table="子类表">
            <key column="外键"></key>
            <property name="子类属性"></property>
        </joined-subclass> 
    </class>

 

每个子类映射一个表,而且只有一个映射配置文件(父类没有表)

<class name="父类类名" abstract="true">
        <!-- 如果用union-subclass节点,主键生成策略不能为自增长! -->
        <id name="id">
            <generator class="uuid"></generator>
        </id>
        <property name="name"></property>
        
        <!--
            union-subclass  
                table 指定为表名, 表的主键即为id列
        -->
        <union-subclass name="子类名" table="子类映射表名">
            <property name="子类属性"></property>
        </union-subclass>
    </class>

 

转载于:https://my.oschina.net/chenliyong/blog/679171

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值