Hibernate关联映射

如果是<many-to-one>则其后面的name属性为“one”的一方
如果是<one-to-many>则其后面的name属性为“many”的一方

双向 一对多关联== 单向一对多+单向多对一;
1.单向多对一:
在实体类里将多的一方(Blog类)的外键 userId换成Users类的user
在配置文件Blog.hbm.xml里添加
<many-to-one name="user" //name属性对应的是Blog类里的user(即刚刚改过来的那个)
      class="edu.myblog.ssh.entity.Users">
      <column name="user_id" />   //user_id为blog表里的外键  
</many-to-one>

2.单向一对多:
配置一对多关联时,set节点要加一个inverse(反转)属性 一般设为true即由对方(多方)管理双方的关联关系

在为“一”的方(相对于“一对多”中的“多”来说)即Users类中实例化一个Set类型的对象blog 即:Set blogs=new HashSet();

在配置文件Users.hbm.xml里添加
<set name="blogs">  //name属性为 Users类即“一”方中实例化的那个Set对象
       <key column="user_id" /> //column属性为多的一方的外键
      <one-to-many class="edu.myblog.ssh.entity.Blog"/>//注意class的路径
</set>

 

3.多对多:

多对多关系中,多采用中间表来关联两个有多多关系的表的.如下Courses.hbm.xml文件:

 <set name="stu" table="stu_course_tec"> <!--table 就是中间表,在数据库中建立的联系表-->
         <key column="cid" />  <!--key中的column是中间表中字段,应该也可以说是中间表中的外键,对应的是该映射文件中的主健-->
         <many-to-many class="Student" column="sid" /> <!--column是中间表中字段-->

 </set>

 

Student.hbm.xml文件:

 <set name="course" table="stu_course_tec">
         <key column="sid" />
         <many-to-many class="entity.Courses" column="cid" />
 </set>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章