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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0

    ??????版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處zhyiwww@163.com

    我的使用背景:

    v??????? 有新聞和新聞?lì)愋停粭l新聞只能屬于一個(gè)類型,一種新聞?lì)愋涂梢詫?duì)應(yīng)多條新聞。

    v??????? 在數(shù)據(jù)庫(kù)中,新聞受新聞?lì)愋屯怄I約束,并可以級(jí)聯(lián)刪除

    v??????? Hibernate 中,實(shí)現(xiàn)級(jí)聯(lián)刪除

    v??????? jkakfl

    ?

    (一) 創(chuàng)建數(shù)據(jù)庫(kù)表和關(guān)系

    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 中,設(shè)置數(shù)據(jù)表的約束關(guān)系如下圖:

    ???
    ???(二)
    實(shí)現(xiàn)數(shù)據(jù)表到 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>

    ?

    其實(shí)這是個(gè)雙向以對(duì)多關(guān)系。

    ?

    (三) DAO 中實(shí)現(xiàn)級(jí)聯(lián)刪除

    ??????? // 刪除新聞?lì)愋陀涗?/span>

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

    typeID 是新聞?lì)愋偷闹麈I

    執(zhí)行此操作將會(huì)刪除所有此新聞?lì)愋偷男侣劇?/span>

    news 是一個(gè) Set 類型的變量,用來(lái)存放此類型的所有的新聞。

    (四) 刪除時(shí)遇到的問(wèn)題

    在數(shù)據(jù)庫(kù)中,如果設(shè)置了約束關(guān)系,那么一定要允許級(jí)聯(lián)刪除,否則,你在執(zhí)行刪除時(shí)會(huì)拋出異常。

    如果我們的數(shù)據(jù)庫(kù)關(guān)系設(shè)置如下:

    news-type-relation2.jpg
    ???畫圈的那個(gè)選項(xiàng)沒有選上的話
    ,那么我們?cè)趫?zhí)行的時(shí)候就會(huì)拋出如下的異常:

    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

    )

    ?

    問(wèn)題的關(guān)鍵在如下兩點(diǎn):

    1.?????? 數(shù)據(jù)庫(kù)中要允許數(shù)據(jù)表的級(jí)聯(lián)刪除

    2.?????? 在映射文件中要將級(jí)聯(lián)刪除配置正確

    ?

    ?



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

    FeedBack:
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2006-04-07 13:56 | zhlmmc
    數(shù)據(jù)庫(kù)中配置正確就可以了,Hibernate配置文件不設(shè)置級(jí)聯(lián)刪除一樣可以跑
    效果是一樣的。  回復(fù)  更多評(píng)論
      
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2006-04-23 21:31 | zhyiwww
    有道理,如果約束在數(shù)據(jù)庫(kù)中設(shè)定的話,效果是一樣的。  回復(fù)  更多評(píng)論
      
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2006-04-23 21:32 | zhyiwww
    不過(guò),這是兩種不同的實(shí)現(xiàn)方法,應(yīng)該說(shuō)是各自有各自的優(yōu)勢(shì)。  回復(fù)  更多評(píng)論
      
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2009-11-27 18:27 |
    我刪除的時(shí)候說(shuō)是約束有問(wèn)題  回復(fù)  更多評(píng)論
      
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2010-01-27 14:45 | zhip
    數(shù)據(jù)庫(kù)不設(shè)置級(jí)聯(lián)刪除也是可以的。
    只要配置了關(guān)聯(lián),以及允許級(jí)聯(lián)刪除。  回復(fù)  更多評(píng)論
      
    # re: Hibernate實(shí)現(xiàn)級(jí)聯(lián)刪除
    2011-10-16 10:55 | 嗖嗖嗖
    我用的annotaion有問(wèn)題
      回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 在线免费观看一级毛片| 久久久久国产精品免费免费搜索| 久久精品私人影院免费看| 四虎国产成人永久精品免费 | 日本黄页网址在线看免费不卡| 成人午夜免费视频| 日韩免费观看一区| 免费av欧美国产在钱| 免费一级肉体全黄毛片| 国产亚洲精品无码成人| 亚洲午夜一区二区电影院| 亚洲熟妇久久精品| 91av免费在线视频| 国产午夜亚洲精品国产成人小说| 亚洲成A人片在线观看WWW| 亚洲图片校园春色| 亚洲自偷自拍另类图片二区| 亚洲人成电影网站色| 大妹子影视剧在线观看全集免费| 久久免费国产视频| 日韩高清在线免费观看| 亚洲欧洲日产国码无码久久99| 亚洲精品视频在线观看视频| 另类小说亚洲色图| 久久免费的精品国产V∧| 日韩免费观看的一级毛片| 久久亚洲精品中文字幕三区| 亚洲国产系列一区二区三区| 一本一道dvd在线观看免费视频| 久久免费看黄a级毛片| 亚洲av无码不卡私人影院| 亚洲网址在线观看| 一级毛片**免费看试看20分钟| 1000部羞羞禁止免费观看视频| 无码欧精品亚洲日韩一区夜夜嗨| 韩国日本好看电影免费看| 亚洲精品乱码久久久久久按摩| 亚洲色偷偷色噜噜狠狠99网| 一个人免费视频在线观看www| 成全视频高清免费观看电视剧| 久久久久久99av无码免费网站 |