大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運維,云服務(wù)技術(shù)支持,IM服務(wù)供應商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          hibernate的 fetch lazy inverse cascade

          1.fetch 和 lazy 主要用于級聯(lián)查詢(select) 而 inverse和cascade主要用于級聯(lián)增、加刪、除修改(sava-update,delete)
          2.想要刪除父表中的記錄,但希望子表中記錄的外鍵引用值設(shè)為null的情況:
             父表的映射文件應該如下配置:
                  <set name="emps" inverse="false" cascade="all">
                      <key>
                          <column name="DEPTNO" precision="2" scale="0" />
                      </key>
                      <one-to-many class="com.sino.hibernate.Emp" />
                  </set>
              inverse="false"是必須的,cascade可有可無,并且子表的映射文件中inverse沒必要設(shè)置,cascade也可以不設(shè)置,如果設(shè)置就設(shè)置成為cascade="none"或者cascade="sava-update"
          <many-to-one name="dept" class="com.sino.hibernate.Dept" fetch="select" cascade="save-update">
                      <column name="DEPTNO" precision="2" scale="0" />
                  </many-to-one>


          3.關(guān)于級聯(lián)查找
            對子表的持久化類進行查找的時候,會一起把子表持久化類中的父表持久化類的對象一起查詢出來,在頁面中可以直接取值的情況:
              要把父表的映射文件中設(shè)置 lazy 屬性如下:
          <class name="com.sino.hibernate.Emp" table="EMP" schema="SCOTT" lazy="false">
          這樣就可以直接在頁面中取值 (類似于這樣的取值 client.cmanager.id)
          如果沒有設(shè)置 lazy="false" 則會拋出異常
          javax.servlet.ServletException: Exception thrown by getter for property cmanager.realName of bean cl
          在Action中取值的話就會拋出
          could not initialize proxy - the owning Session was closed的異常

          posted on 2009-03-09 19:41 草原上的駱駝 閱讀(536) 評論(0)  編輯  收藏 所屬分類: JAVA框架

          主站蜘蛛池模板: 甘洛县| 普洱| 威宁| 阳江市| 自贡市| 阳新县| 梅州市| 宜兴市| 平阳县| 黎平县| 肥西县| 文山县| 永和县| 萍乡市| 桂阳县| 丽江市| 黔江区| 龙川县| 道孚县| 若尔盖县| 东台市| 休宁县| 三明市| 长垣县| 宜城市| 常熟市| 阜南县| 中西区| 余庆县| 汶上县| 吉安市| 台东县| 全州县| 巴东县| 元朗区| 榆中县| 铁岭市| 葵青区| 盐山县| 长岛县| 班玛县|