Java瑣事

          -I am not alone
          posts - 54, comments - 30, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
             對于兩個(gè)不同的表,在hibernate中可以設(shè)置它們的多對多關(guān)系,一對一關(guān)系或者是多對一關(guān)系。而且還有單向和雙向的問題。這些都是學(xué)hibernate必學(xué)的,這里不再重復(fù)。我只說下級(jí)聯(lián)刪除時(shí)應(yīng)注意的問題,多對一單向關(guān)系到底能不能實(shí)現(xiàn)級(jí)聯(lián)?
             假設(shè)存在兩個(gè)表:欄目(lm)表,內(nèi)容(mknr)表;它們屬于多對一的關(guān)系,即欄目可以包括多個(gè)內(nèi)容。則有以下方式:
           欄目表對應(yīng)的pojo類:Lm.java
          public class Lm implements java.io.Serializable
          {
              
          //欄目id
              private int id;
              
          private String name;
              
          private Set mknr = new HashSet();

              
          //getter和setter方法

          }
             欄目表對應(yīng)的映射文件:Lm.hbm.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
          <hibernate-mapping>
              
          <class catalog="eteares" name="cn.edu.ujn.wsjx.model.Lm" table="lm">
                  
          <id name="id" type="java.lang.Integer">
                      
          <column name="id" />
                      
          <generator class="identity" />
                  
          </id>
                  
          <property name="name" type="java.lang.String">
                      
          <column length="20" name="name" />
                  
          <set name="mknr" inverse="false" cascade="all">
                      
          <key column="lmId" />
                      
          <one-to-many class="cn.edu.ujn.wsjx.model.Mknr"/>
                  
          </set>
              
          </class>
          </hibernate-mapping>
             內(nèi)容表對應(yīng)的pojo類:Mknr.java
          public class Mknr implements java.io.Serializable
          {
              
          private int id;
              
          private String title;
              
          private String content;
              
          private Lm lm;
              
              
          //getter和setter方法

          }
            內(nèi)容表對應(yīng)的映射文件:Mknr.hbm.xml
          <?xml version="1.0" encoding="utf-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >

          <hibernate-mapping>
              
          <class name="cn.edu.ujn.wsjx.model.Mknr" table="mknr" catalog="eteares">
                  
          <id name="id" type="java.lang.Integer">
                      
          <column name="id" />
                      
          <generator class="identity" />
                  
          </id>
                  
          <property name="title" type="java.lang.String">
                      
          <column name="title" length="100" />
                  
          </property>
                  
          <property name="content" type="java.lang.String">
                      
          <column name="content" length="16777215" />
                  
          </property>
                  
          <many-to-one name="lm" class="cn.edu.ujn.wsjx.model.Lm" lazy="false">
                      
          <column name="lmId" />
                  
          </many-to-one>
              
          </class>
          </hibernate-mapping>


                          從上面的代碼可以得知,這種設(shè)置方式屬于一對多雙向關(guān)聯(lián),為什么不設(shè)置成多對一單向關(guān)聯(lián)呢(把Lm.java中的mknr屬性去掉),之前我就是這么設(shè)置,但每當(dāng)刪除lm中的記錄時(shí),刪除就會(huì)出現(xiàn)外鍵參考的錯(cuò)誤,這是因?yàn)閙knr中有記錄外鍵到了lm表中,而刪除時(shí)因?yàn)閱蜗蜿P(guān)聯(lián)無法通過lm找到mknr
                          所以要使用級(jí)聯(lián)刪除,就要設(shè)置成雙向關(guān)聯(lián)!

          評(píng)論

          # re: hibernate的單向級(jí)聯(lián)刪除問題  回復(fù)  更多評(píng)論   

          2010-10-08 09:25 by 窩窩影視
          學(xué)習(xí)了

          # re: hibernate的單向級(jí)聯(lián)刪除問題  回復(fù)  更多評(píng)論   

          2010-11-04 11:16 by jndxjing
          我都百度到你這來了。。。哈哈

          # re: hibernate的單向級(jí)聯(lián)刪除問題  回復(fù)  更多評(píng)論   

          2010-11-04 17:11 by syg
          @jndxjing
          幸會(huì)……幸會(huì)
          主站蜘蛛池模板: 花莲县| 措美县| 余江县| 吴堡县| 边坝县| 临颍县| 乌拉特中旗| 东阿县| 元阳县| 神池县| 定襄县| 凤庆县| 拉孜县| 丹棱县| 泾川县| 安国市| 平谷区| 旌德县| 泗洪县| 平陆县| 新源县| 林芝县| 云梦县| 伊金霍洛旗| 太谷县| 江油市| 闽侯县| 师宗县| 松溪县| 洛扎县| 绥滨县| 南宁市| 芜湖县| 禄丰县| 化德县| 新余市| 马山县| 永川市| 凤翔县| 英吉沙县| 满城县|