<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    ??????版權所有,轉載請注明出處zhyiwww@163.com

    我的使用背景:

    v??????? 有新聞和新聞類型,一條新聞只能屬于一個類型,一種新聞類型可以對應多條新聞。

    v??????? 在數據庫中,新聞受新聞類型外鍵約束,并可以級聯刪除

    v??????? Hibernate 中,實現級聯刪除

    v??????? jkakfl

    ?

    (一) 創建數據庫表和關系

    DROP? TABLE? NewsType;

    CREATE? TABLE NewsType

    (

    ?????? TypeID? NUMBER(10) PRIMARY KEY? NOT NULL,

    ?????? TypeName? VARCHAR2(400) NOT NULL,

    ?????? DirName?? VARCHAR2(400) NOT NULL,

    ?????? TemplateName VARCHAR2(400) NOT NULL

    );

    DROP? SEQUENCE NEWSTYPE_SEQ;

    CREATE? SEQUENCE NEWSTYPE_SEQ? INCREMENT BY 1 START WITH 1;

    ?

    DROP? TABLE? News;

    CREATE? TABLE? News

    (

    ?????? NewsID? NUMBER(10) PRIMARY KEY NOT NULL,

    ??????? TypeID? NUMBER(10) NOT NULL,

    ?????? Title? VARCHAR2(400) NOT NULL,

    ?????? HitCount NUMBER(10) DEFAULT? 0 NOT NULL,

    ?????? IssuseDate? DATE NOT NULL,

    ?????? DeployerID? NUMBER(10) NOT? NULL,

    ?????? Origin? VARCHAR2(400)? NOT? NULL,

    ?????? URL? VARCHAR2(400) NOT NULL,

    ?????? KEYWORDS VARCHAR(400) ,

    ??????? Priority? NUMBER(10)? DEFAULT? 0 NOT NULL,

    ?????? Special? VARCHAR2(400) ,

    ?????? Description? VARCHAR2(400),

    ?????? Author? VARCHAR2(400),

    ?????? Topic?? VARCHAR2(400)

    );

    DROP SEQUENCE NEWS_SEQ;

    CREATE SEQUENCE NEWS_SEQ? INCREMENT BY? 1 START WITH 1;

    ?news-type-relation1.jpg

    oralce 中,設置數據表的約束關系如下圖:

    ???
    ???(二)
    實現數據表到 POJO 的映射

    映射類,我們略去,此處主要顯示配置文件

    ü???????? News.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">

    <!-- DO NOT EDIT: This is a generated file that is synchronized -->

    <!-- by MyEclipse Hibernate tool integration.?????????????????? -->

    <!-- Created Fri Nov 11 21:59:47 CST 2005???????????????????????? -->

    <hibernate-mapping package="com.scenechina.vr.model">

    ?????? <class name="News" table="NEWS" lazy="false">

    ?????? ?????? <id name="newsid" column="NEWSID" type="java.lang.Long">

    ?????? ?????? ?????? <generator class="sequence">

    ?????? ?????? ?????? ?????? <param name="sequence">NEWS_SEQ</param>

    ?????? ?????? ?????? </generator>

    ?????? ?????? </id>

    ?????? ?????? <property name="typeid" column="TYPEID" type="java.lang.Long" not-null="true"/>

    ?????? ?????? <property name="title" column="TITLE" type="java.lang.String" not-null="true"/>

    ?????? ?????? <property name="hitcount" column="HITCOUNT" type="java.lang.Long" not-null="true"/>

    ?????? ?????? <property name="issusedate" column="ISSUSEDATE" type="java.util.Date" not-null="true"/>

    ?????? ?????? <property name="deployerid" column="DEPLOYERID" type="java.lang.Long" not-null="true"/>

    ?????? ?????? <property name="origin" column="ORIGIN" type="java.lang.String" not-null="true"/>

    ?????? ?????? <property name="url" column="URL" type="java.lang.String" not-null="true"/>

    ?????? ?????? <property name="keywords" column="KEYWORDS" type="java.lang.String"/>

    ?????? ?????? <property name="priority" column="PRIORITY" type="java.lang.Long" not-null="true"/>

    ?????? ?????? <property name="special" column="SPECIAL" type="java.lang.String"/>

    ?????? ?????? <property name="description" column="DESCRIPTION" type="java.lang.String"/>

    ?????? ?????? <property name="author" column="AUTHOR" type="java.lang.String"/>

    ?????? ?????? <property name="topic" column="TOPIC" type="java.lang.String"/>

    ?????? ?????? <set name="newsset" cascade="all" inverse="true" lazy="false" order-by="NEWSDETIALID" table="Newsdetials">

    ?????? ?????? ?????? <key column="newsid"/>

    ?????? ?????? ?????? <one-to-many class="Newsdetials"/>

    ?????? ?????? </set>

    ?????? ?????? <set name="picset" cascade="all" inverse="true" lazy="false" table="Picture">

    ?????? ?????? ?????? <key column="newsid"/>

    ?????? ?????? ?????? <one-to-many class="Picture"/>

    ?????? ?????? </set>

    ????? ????? <many-to-one name="newstype" column="TYPEID" entity-name="com.model.Newstype" insert="false" update="false"/>

    ?????? </class>

    </hibernate-mapping>

    ?

    ü???????? Newstype.hbm.xml

    <?xml version="1.0"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    ??? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

    ?????? <!--

    ??? Created by the Middlegen Hibernate plugin

    ?

    ??? http://boss.bekk.no/boss/middlegen/

    ??? http://hibernate.sourceforge.net/

    -->

    ?????? <class name="com.scenechina.vr.model.Newstype" table="NEWSTYPE" lazy="false">

    ?????? ?????? <id name="typeid" type="java.lang.Long" column="TYPEID">

    ?????? ?????? ?????? <generator class="assigned"/>

    ?????? ?????? </id>

    ?????? ?????? <property name="typename" type="java.lang.String" column="TYPENAME" not-null="true" length="100"/>

    ?????? ?????? <property name="dir" type="java.lang.String" column="DIRNAME" not-null="true" length="100"/>

    ?????? ?????? <property name="templatename" type="java.lang.String" column="TEMPLATENAME" not-null="true" length="100"/>

    ?????? ?????? <!-- associations -->

    ????? ????? <set name="news" cascade="all-delete-orphan" inverse="true">

    ????? ????? ????? <key column="TYPEID"/>

    ????? ????? ????? <one-to-many class="com.model.News"/>

    ????? ????? </set>

    ?????? </class>

    </hibernate-mapping>

    ?

    其實這是個雙向以對多關系。

    ?

    (三) DAO 中實現級聯刪除

    ??????? // 刪除新聞類型記錄

    ??????? dao.getNewsTypeDAO().deleteObjects(typeIDs);

    typeID 是新聞類型的主鍵

    執行此操作將會刪除所有此新聞類型的新聞。

    news 是一個 Set 類型的變量,用來存放此類型的所有的新聞。

    (四) 刪除時遇到的問題

    在數據庫中,如果設置了約束關系,那么一定要允許級聯刪除,否則,你在執行刪除時會拋出異常。

    如果我們的數據庫關系設置如下:

    news-type-relation2.jpg
    ???畫圈的那個選項沒有選上的話
    ,那么我們在執行的時候就會拋出如下的異常:

    006-04-06 13:20:16 ERROR [http-8080-Processor23] (JDBCExceptionReporter.java:72

    ?- ORA-02292: 違反完整約束條件 (SC.NEWS_TYPE_RELATIONS) - 已找到子記錄日志

    ?

    rg.hibernate.exception.ConstraintViolationException: could not execute update q

    ery

    ?????? at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.j

    va:69)

    ?????? at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelp

    r.java:43)

    ?????? at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:8

    )

    ?

    問題的關鍵在如下兩點:

    1.?????? 數據庫中要允許數據表的級聯刪除

    2.?????? 在映射文件中要將級聯刪除配置正確

    ?

    ?



    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-04-06 14:12 zhyiwww 閱讀(24613) 評論(6)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: Hibernate實現級聯刪除
    2006-04-07 13:56 | zhlmmc
    數據庫中配置正確就可以了,Hibernate配置文件不設置級聯刪除一樣可以跑
    效果是一樣的。  回復  更多評論
      
    # re: Hibernate實現級聯刪除
    2006-04-23 21:31 | zhyiwww
    有道理,如果約束在數據庫中設定的話,效果是一樣的。  回復  更多評論
      
    # re: Hibernate實現級聯刪除
    2006-04-23 21:32 | zhyiwww
    不過,這是兩種不同的實現方法,應該說是各自有各自的優勢。  回復  更多評論
      
    # re: Hibernate實現級聯刪除
    2009-11-27 18:27 |
    我刪除的時候說是約束有問題  回復  更多評論
      
    # re: Hibernate實現級聯刪除
    2010-01-27 14:45 | zhip
    數據庫不設置級聯刪除也是可以的。
    只要配置了關聯,以及允許級聯刪除。  回復  更多評論
      
    # re: Hibernate實現級聯刪除
    2011-10-16 10:55 | 嗖嗖嗖
    我用的annotaion有問題
      回復  更多評論
      
    主站蜘蛛池模板: 中文字幕亚洲免费无线观看日本| 免费在线看片网站| 亚洲精品成人网站在线播放| aa级女人大片喷水视频免费| 亚洲日韩中文字幕日韩在线| 免费很黄无遮挡的视频毛片| 亚洲国产免费综合| 一级毛片免费不卡| 亚洲精品乱码久久久久久按摩| 日本高清不卡aⅴ免费网站| 亚洲AV无码久久精品蜜桃| 最近2019中文字幕免费直播| 91亚洲国产成人久久精品网址| 69式互添免费视频| 亚洲色偷偷色噜噜狠狠99网| 国产91在线免费| 国产免费人成视频尤勿视频| 亚洲成AV人片在线观看无码| 99热这里只有精品6免费| 亚洲丰满熟女一区二区v| 国产麻豆免费观看91| EEUSS影院WWW在线观看免费| 亚洲桃色AV无码| 4虎永免费最新永久免费地址| 亚洲av日韩综合一区久热| 亚洲精品456播放| 免费不卡在线观看AV| 国产精品高清视亚洲精品| 免费人成视频在线观看视频| 免费黄网站在线观看| 四虎必出精品亚洲高清| 亚洲高清免费视频| 一级毛片免费观看| 亚洲国产精品久久久久秋霞小| 中文亚洲AV片在线观看不卡| 很黄很黄的网站免费的| 色吊丝性永久免费看码| 亚洲国产成人久久综合一| 日韩免费视频播放| 亚洲精品免费观看| 美景之屋4在线未删减免费|