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

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827291
          • 排名 - 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
          主站蜘蛛池模板: 明光市| 博野县| 开阳县| 曲松县| 天水市| 读书| 政和县| 新晃| 东丰县| 宜章县| 普洱| 永吉县| 潮州市| 阳谷县| 德格县| 牟定县| 绥阳县| 高州市| 京山县| 从化市| 双峰县| 炎陵县| 黑龙江省| 凤城市| 永靖县| 临泉县| 荃湾区| 伊宁市| 重庆市| 慈溪市| 潮安县| 布尔津县| 南木林县| 潢川县| 南江县| 普兰县| 山丹县| 内丘县| 星子县| 石狮市| 高密市|