隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827233
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

            多對多只有雙向關系(如果添加一張輔助表來存儲多對多的單向關系也可以,但是不值得
          這么做,因為多對多的單向關系可以用多對一或者一對多的半向關系來表達,不必要添加一張
          輔助表),如學生與課程之間,一個學生對應多個課程,一個課程也可以被多個學生選擇。

          Student.hbm.xml
          ...
          <hibernate-mapping>
           <class name="model.Student" table="student">
            <id name="id" unsaved-value="null">
             <generator class="uuid.hex"/>
            </id>
            <property name="name" type="string"/>
            <set name="courses"
              table="student_course"
              cascade="save-update"
            >
              <key column="stu_id"/>
              <many-to-many class="model.Course
                column="course_id"/>
            </set>

           <class>
          </hibernate-mapping>
          多對多關系需要配置的屬性比較多一些。初學者經常會把<key column=""/>和<column="">的值
          弄反了,其實只要記住一個原則:<key column="">總是和本身類的主鍵id對應,而<column="">
          總是與關聯類的主鍵id相對應。對于上面的Student.hbm.xml,關聯類是Course,本身類則是Student

          Course.hbm.xml
          ...
          <hibernate-mapping>
           <class name="model.Course" table="course">
            <id name="id" unsaved-value="null">
             <generator class="uuid.hex"/>
            </id>
            <propery name="name" type="string"/>
            <set name="students"
              table="student_course"
              cascade="save-update"
              >
              <key columm="course_id"/>
              <many-to-many class="model.Student"
                column="stu_id"/>
            </set>

           </class>
          </hibernate-mapping>
          注意:Student與Course的cascade都設置為save-update,在多對多的關系中,all,delete等
          cascade是沒有意義的,因為多對多關系中,并不能因為父對象被刪除,而造成被包括的子對象
          被刪除,因為可能還有其他的父對象參考了這個子對象。

          另外,在多對多關系中,如果雙方都有控制權(也就是雙方都沒有設置inverse="true"),則
          雙方都要把關聯關系反映到數據庫。必須在某一方設置inverse="true",然后在執行語句時使用
          主控方進行操作(也就是沒有設置inverse="true"的那一方)。



          posted on 2007-12-29 15:01 Ke 閱讀(2015) 評論(0)  編輯  收藏 所屬分類: hibernate
          主站蜘蛛池模板: 通城县| 江华| 商都县| 兴文县| 云霄县| 房山区| 苍溪县| 海城市| 即墨市| 遵义县| 柳河县| 增城市| 台南县| 潢川县| 和平县| 南开区| 博客| 洞头县| 黄山市| 普陀区| 牡丹江市| 威海市| 庆云县| 绵阳市| 哈尔滨市| 五常市| 牡丹江市| 乌拉特前旗| 高州市| 罗山县| 新营市| 孝昌县| 友谊县| 石泉县| 松阳县| 望城县| 同心县| 清新县| 大竹县| 永和县| 怀远县|