欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多对多映射

程序员文章站 2022-04-24 11:30:29
...
映射文件的写法:写多对多的映射文件,从关联表方去考虑,即:从中间表去考虑,set集合中的配置就是如何对中间表的描述。中间表需要:定义中间表的名称、中间表的两个外键,
这两个外键分别参考哪个表的主键
 
其实:student表和中间表的关系,就是一对多的关系,然后从这点来写中间表
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping package="cn.itcast.g_hbm_manyToMany">
       
       <class name="Student" table="student">
              <id name="id">
               <generator></generator>
              </id>
              <property name="name"/>
              
              <!-- teachers属性,Set集合。
                     表达的是本类与Teacher的多对多。
                     
                     table属性:中间表(集合表)
                     key子元素:集合外键(引用当前表主键的那个外键)
               这里按照中间表的结构来写:中间表的表名、两个外键-->
               <set name="teachers" table="teacher_student" inverse="false"> //table定义中间表的表名
                     <key column="studentId"></key> //指出一个外键,因为实在本表中,所以他知道是参考哪个表的主键(就是本表的主键)。Inverse让Student来维护关系。
                     <many-to-many  class="Teacher" column="teacherId"></many-to-many>//指出另一个主键,class是指出参考的是哪个表的主键
              </set>
                     
       </class>
       
</hibernate-mapping>
 
 
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping package="cn.itcast.g_hbm_manyToMany">
       
       <class name="Teacher" table="teacher">
              <id name="id">
               <generator></generator>
              </id>
              <property name="name" type="string" column="name"/>
              
              <!-- students属性,Set集合。
                     表达的是本类与Student的多对多。
               -->
              <set name="students" table="teacher_student" inverse="true">这样让本方放弃对关系的维护
                     <key column="teacherId"></key>
                     <many-to-many class="Student" column="studentId"></many-to-many>
              </set>
              
       </class>
       
</hibernate-mapping>

转载于:https://my.oschina.net/cys21/blog/513624