• Hibernate的多对多关联映射


    多对多双向关联关系配置 

    多对多关联需要通过另外的一张表保存多对多的映射关系
      例如:学生的选课,在建立数据表时需要提供3个表来建立连接,其中包括
         学生表(students)课程表(courses)和学生选课表(student_course)
         在student_course表中,字段student_id 和course_id作为联合主键并且
         分别作为外键参照students表和courses表

    1.在学生和课程的持久化类中分别定义Set类型的属性

    2 .类Student的映射文件中使用<set>元素配置多对多的关联的关系

     Student.hbm.xml配置如下;添加属性:private Set<Course> courses = new HashSet<Course>();

    <hibernate-mapping>
        <class name="com.cong.student.Student" table="students">
            <id name="id" column="id" type="java.lang.Long">
                <generator class="native"/>
            </id>
            
            <property name="sname" type="string">
                <column name="sname" length="30"/>
            </property>
            
            <set name="courses" table="student_course" lazy="true"  //name的值为类Student中的属性 lazy为true表示懒加载
            inverse="true" cascade="save-update">        //inverse为true表示当前的一端为镜像端,cascade表示级联
                <key column="student_id"/> //指定student_course表参照students表里的外键字段名称
                <many-to-many class="com.cong.student.Course" column="course_id"/>
                //class表示多对多关联中的另一方的持久化类的全路径,column指定student_course表中参照courses表的外键字段名称
            </set>
        </class>
    </hibernate-mapping>

    3.类Course的映射文件中使用<set>元素配置多对多的关联的关系
     Course.hbm.xml文件的配置如下:添加属性:private Set<Student> students = new HashSet<Student>();

    <hibernate-mapping>
        <class name="com.cong.student.Course" table="courses">
            <id name="id" column="id" type="java.lang.Long">
                <generator class="native"/>
            </id>
            <property name="cname" type="string">
                <column name="cname" length="30"/>
            </property>
            
            <set name="students" table="student_course" lazy="true"
            cascade="save-update">
                <key column="course_id"/>
                <many-to-many class="com.cong.student.Student" column="student_id"/>
            </set>
        </class>
    </hibernate-mapping

    注:多对多关联关系也分为单向关联和双向关联,以上为双向关联,单向关联只需在一个实体类中定义Set
          类型属性以及在其映射文件中进行相应的配置即可

  • 相关阅读:
    母版页中对控件ID的处理
    使用Gridview绑定数据库中的图片
    导出Excel表格时,如何把数据库表中的编号转换成配置文件中的"汉字"
    ORA01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
    Oracle 把触发器说透
    规模估算失准 软件开发成空中楼阁
    在web开发中的三个层次使用事务
    oninput,onpropertychange,onchange的用法和区别
    Oracle 把游标说透
    在datatable中,在指定位置插入列
  • 原文地址:https://www.cnblogs.com/qingcong/p/5919108.html
Copyright © 2020-2023  润新知