zoukankan      html  css  js  c++  java
  • hibernate 继承映射

    hibernate的继承映射可以理解为Java 类之间的继承关系,hibernate有三种解决方案

    一,subclass属性

       比如Student类 继承Person类,添加:

         在Person.hbm.xml文件中添加

         1,<subclass name="com.m01.subclass.Student" discriminator-value="student">
            <property name="school" type="java.lang.String">
              <column name="SCHOOL"></column>
            </property>
          </subclass>

          class: 子类的全类名; discriminator-value: 指定子类的默认值 [下面详解]

          name : 子类中添加的属性; column的name : 数据表中与之对应的字段名

           2,添加属性 : discriminator-value

          <class name="com.m01.subclass.Person" table="PERSON" discriminator-value="person">

          discriminator-value: 指定父类的默认值[下面详解]

         3, 添加: 

           <discriminator column="TYPE" type="string"></discriminator>

           column : 在数据表中添加的数据字段名

         这种解决方案是通过在数据表中添加一个指定字段来区分 父类和子类的数据,父类和子类的数据保存在同一张数据表中; discriminator-value

         属性指定了父类和子类在数据表的"区分字段"

         的默认值,比如说 父类的数据在在数据表中 对应的 "区分字段"的值为 "person"


    二,joined-subclass属性

       比如Dog类 继承Animal类

        在Animal.hbm.xml文件中添加

         <joined-subclass name="com.m01.joinedsubclass.Dog" table="DOG">
          <key column="DOGID"></key>
          <property name="type" type="java.lang.String" column="TYPES"/>
         </joined-subclass>

         name: 子类的全类型;   table: 子类对应的数据表名

         column: Dog表的主键 同时也是父类对应数据表的 外键

         name : 子类新增属性名

        这种解决方案是 增加两张数据表 父类和子类的数据各自放在对应的数据表中,但同时,子类还会将自己的数据通过外键关联到父类的数据表中。


    三,union-subclass属性

       比如Man类继承Human类

        在Human.hbm.xml文件中添加

         <union-subclass name="com.m01.unionsubclass.Man" table="MAN">
          <property name="sex" type="java.lang.String" column="SEX"/>
         </union-subclass>

         table:子类对应的数据表名; name : 子类增加的属性名; column: MAN表中的字段名对应着 子类的sex属性

        这种解决方案是 增加两张数据表 父类和子类的数据各自放在对应的数据表中应当注意的是 子类对应的数据表中同样有字段对应着父类的属性

        这使得子类的数据和父类对应的数据表不存在关联关系。

  • 相关阅读:
    C++11新特性
    Qt操作xml
    指针和引用的区别
    QT软件主题切换
    常见的临时变量的生成场景
    QQuickWidget+QML设置背景透明
    idea maven Could not transfer artifact
    Java项目启动时执行指定方法的几种方式
    解决bootstrap-table在切换分页后再次查询报错404问题
    bootstrap:表单必填项*标识,及提交前校验
  • 原文地址:https://www.cnblogs.com/m01qiuping/p/6384802.html
Copyright © 2011-2022 走看看