多对多映射

映射文件的写法:写多对多的映射文件,从关联表方去考虑,即:从中间表去考虑,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 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 column="studentId"></many-to-many>
              </set>
              
       </class>
       
</hibernate-mapping>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值