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>

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