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

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

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

    碰到的一個(gè)Hibernate的問(wèn)題

    也不知道算不算問(wèn)題,只是感覺(jué)有那么一點(diǎn)奇怪...
    在OSIV情況下編寫的一個(gè)測(cè)試類,其中的代碼是這樣的:
    1Test test=new Test();
    2dao.save(test);
    3Test testChild=new Test();
    4testChild.setParent(test);
    5dao.save(testChild);
    6Test resultTest=(Test)dao.getById(Test.class, test.getId());
    Test本身是個(gè)自關(guān)聯(lián),映射文件如下:
    <class
           
    name="dataset.component.metadata.display.Test"
           table
    ="T_Test"
           dynamic-update
    ="true"
       
    >

           
    <id
               
    name="id"
               column
    ="id"
               type
    ="int"
           
    >
               
    <generator class="native">
               
    </generator>
           
    </id>

           
    <set
               
    name="childs"
               table
    ="T_Test"
               lazy
    ="true"
               cascade
    ="delete"
               sort
    ="unsorted"
           
    >

               
    <key
                   
    column="parentId"
               
    >
               
    </key>

               
    <one-to-many
                     
    class="dataset.component.metadata.display.Test"
               
    />

           
    </set>

           
    <many-to-one
               
    name="parent"
               class
    ="dataset.component.metadata.display.Test"
               cascade
    ="none"
               outer-join
    ="auto"
               update
    ="true"
               insert
    ="true"
               column
    ="parentId"
           
    />

       
    </class>

    因?yàn)槭莖pen session in view,所以session是在代碼執(zhí)行完畢后關(guān)閉的;
    在這種情況下執(zhí)行resultTest.getChilds()返回的是null。
    調(diào)試的時(shí)候dao.getById執(zhí)行完畢后取回的resultTest和之前的test是同一個(gè)對(duì)象,hashcode都是一樣的..
    于是便嘗試在dao.getById之前把session關(guān)閉,這個(gè)時(shí)候再執(zhí)行發(fā)現(xiàn)resultTest.getChilds()就是正確的了..
    總結(jié),就是在同一個(gè)session內(nèi)如果save了一個(gè)對(duì)象,再通過(guò)session.load的方式去取這個(gè)對(duì)象取出的將仍然是當(dāng)前session中的對(duì)象,也就是說(shuō)不會(huì)去數(shù)據(jù)庫(kù)中重新獲取...
    怎么感覺(jué)這樣是不太對(duì)的,明明數(shù)據(jù)庫(kù)有改變,卻沒(méi)有去重新的加載...
    但因?yàn)閛pen session in view是這么做的,所以現(xiàn)在干脆測(cè)試的時(shí)候就使用另外一個(gè)dao了,唯一的不同就是這個(gè)dao會(huì)即時(shí)的關(guān)閉session,大家有沒(méi)有別的什么好建議,^_^

    posted on 2006-02-24 20:05 BlueDavy 閱讀(1710) 評(píng)論(6)  編輯  收藏 所屬分類: Java

    評(píng)論

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-02-24 20:56 Vincent Thinking

    ^_^,因?yàn)镾ession本身一級(jí)緩存,由于OSIV取的同一個(gè)session,所以是同一個(gè)對(duì)象。save(test)后,test已經(jīng)從pojo轉(zhuǎn)變?yōu)閜o,任何po的改動(dòng)都會(huì)同步到數(shù)據(jù)庫(kù),但是代碼中僅僅是testChild.setParent(test),而沒(méi)有test.addChild(testChild),所以僅僅是testChild發(fā)生了變化,test沒(méi)有任何改動(dòng),session中仍然保存的是以前的test。重新開(kāi)一個(gè)session會(huì)讀取會(huì)得到帶有child的test,或者用get()方法。  回復(fù)  更多評(píng)論   

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-02-26 10:07 Asktalk

    看一下它,對(duì)你有幫助,http://m.tkk7.com/asktalk/archive/2006/01/18/28548.html  回復(fù)  更多評(píng)論   

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-02-26 16:45 BlueDavy

    恩,多謝asktalk,^_^  回復(fù)  更多評(píng)論   

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-02-28 08:20 aycl

    在 dao.getById(..) 前叫: session.clear() 或 session.evict(test). 可清理一級(jí)緩存, 迫 hibernate 重新讀取.


      回復(fù)  更多評(píng)論   

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-02-28 09:27 BlueDavy

    恩,已經(jīng)這么做了,多謝,^_^  回復(fù)  更多評(píng)論   

    # re: 碰到的一個(gè)Hibernate的問(wèn)題 2006-03-10 13:47 Tin

    可以用session.refresh()進(jìn)行強(qiáng)行讀取就OK了。
    我么項(xiàng)目的Category也是自影射,修改完以后child就沒(méi)有了。只要refresh一下就OK了。  回復(fù)  更多評(píng)論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導(dǎo)航

    <2006年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627281234
    567891011

    統(tǒng)計(jì)

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久夜色精品国产亚洲av| 一级毛片免费播放| 免费一级毛片在线播放视频免费观看永久 | 黄页网址在线免费观看| 亚洲av纯肉无码精品动漫| 亚洲区日韩精品中文字幕| 亚洲欧美日韩国产精品一区| 久久久国产亚洲精品| 亚洲人成电影网站免费| 国产大陆亚洲精品国产| 菠萝菠萝蜜在线免费视频| 人碰人碰人成人免费视频| 一级毛片大全免费播放| 久久精品无码专区免费| 青青草原1769久久免费播放| 8x成人永久免费视频| 亚洲视频免费在线看| 国拍在线精品视频免费观看| 97人伦色伦成人免费视频| 日韩免费观看视频| 亚洲国产综合无码一区二区二三区 | 国产精品免费视频观看拍拍| CAOPORN国产精品免费视频| 中文字幕日本人妻久久久免费| 国产免费爽爽视频在线观看| 美女内射无套日韩免费播放| 国产精品入口麻豆免费观看| 免费高清在线爱做视频| 国产18禁黄网站免费观看| 久久精品亚洲乱码伦伦中文| 久久久亚洲精品无码| 亚洲国产品综合人成综合网站| 亚洲欧美日韩中文字幕一区二区三区| 猫咪www免费人成网站| 99精品全国免费观看视频..| 69式互添免费视频| 国产又黄又爽又猛的免费视频播放| 亚洲中文字幕视频国产| 久久亚洲精品人成综合网| 亚洲区日韩精品中文字幕| 一个人看的www免费高清|