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

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

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

    hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn)

          one-to-one在hibernate中可以用來(lái)作為兩張表之間的主鍵關(guān)聯(lián),這也是hibernate中主鍵關(guān)聯(lián)的一種用法,這樣在一張表中的ID,在生成另外一張表的同時(shí)回自動(dòng)插入到相應(yīng)的ID字段中去,相應(yīng)的XML文件設(shè)置比較簡(jiǎn)單,舉例如下:

        <!-- 建立一對(duì)一的到Address的映射,這個(gè)是寫(xiě)在User的XML配置文件中的 -->
        <!-- 相應(yīng)的User bean(PO)中也要添加屬性 com.xx.Address  address-->
        <one-to-one name="address" cascade="all" class="com.xx.Address"/>
       
       <!-- cascade的屬性設(shè)置不再重復(fù)了,可以查看hibernate文檔 -->

        <!-- 建立一對(duì)一的到User的映射,這個(gè)是寫(xiě)在Address的XML配置文件中的 -->
        <!-- 相應(yīng)的Address bean(PO)中也要添加屬性 com.xx.User user--> -->
        <one-to-one name="user" class="com.xx.User" constrained="true"/>

          為了在Address中使用User中的主鍵ID值,我們需要設(shè)置Address中的主鍵生成規(guī)則,如下所示,采用foreign關(guān)鍵字

       <id column="ID" name="id" type="long" unsaved-value="0">
          <generator class="foreign">
            <param name="property">user</param> 
          </generator>
       </id>


          這里需要注意的是property的屬性值必須與上面到User的映射所填寫(xiě)的name屬性值一致,這樣就完成了one-to-one的映射關(guān)系。

    上面的過(guò)程都很簡(jiǎn)單,下面我來(lái)說(shuō)說(shuō)這里需要注意的地方:

      1.   在設(shè)置屬性ID的時(shí)候必須注意字段的長(zhǎng)度,如筆者這樣使用oracle的sequence來(lái)生成ID,其長(zhǎng)度有14位之長(zhǎng),則應(yīng)選擇hibernate類(lèi)型long,對(duì)應(yīng)的實(shí)體中應(yīng)選擇Long,這樣不會(huì)出現(xiàn)溢出的情況。


      2.   在測(cè)試的時(shí)候必須要注意這兩張表之間因?yàn)橐呀?jīng)存在了一對(duì)一的關(guān)系,所以我們不能只寫(xiě)
             user.setAddress(address);
             而忽略了
             address.setUser(user);
             這樣在做插入的時(shí)候會(huì)報(bào)出attempted to assign id from null one-to-one property: address的錯(cuò)誤,這一點(diǎn)初學(xué)者會(huì)經(jīng)常犯,筆者也是其中之一。


     3.   如果不寫(xiě)cascade="all"或者寫(xiě)成cascade="none"的話(huà),即使你寫(xiě)了
             user.setAddress(address);
             address.setUser(user);
           也不會(huì)發(fā)生任何事情,只有user會(huì)被存儲(chǔ)。

    以上是一些筆者經(jīng)歷的小經(jīng)驗(yàn),如果有不對(duì)的地方歡迎指正。

    posted on 2005-03-23 17:27 Find it, try it, experience it 閱讀(10001) 評(píng)論(9)  編輯  收藏

    評(píng)論

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2005-03-30 09:34 baijsp

    您說(shuō)的最上面的那兩個(gè)映射文件
    <one-to-one name="address" cascade="all" class="com.xx.Address"/>

    <one-to-one name="user" class="com.xx.User" constrained="true"/>
    分別對(duì)應(yīng)的是那個(gè)映射文件呀?第一個(gè)是address的嗎?還是user的。講的不太明白。我試過(guò)了你的這個(gè)例子,沒(méi)有實(shí)現(xiàn)這種關(guān)系的映射  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2005-03-30 12:20 一個(gè)人的日子,我獨(dú)來(lái)獨(dú)往

    我已經(jīng)在例子中用紅色的標(biāo)記進(jìn)行了標(biāo)記,希望對(duì)你能有所幫助,另外我的QQ 9809973,還有什么問(wèn)題聯(lián)系我  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2005-04-13 08:47 4431

    你是一個(gè)人嗎,需要人和你一起學(xué)習(xí)嗎  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2005-04-13 15:21 一個(gè)人的日子,我獨(dú)來(lái)獨(dú)往

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

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2005-05-13 16:24 Jun Tsai

    能不能把你的保存User時(shí)候的代碼拿來(lái)看看?
    謝謝  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2008-05-09 18:29 xx

    級(jí)聯(lián)刪除會(huì)嗎?  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2008-08-26 17:34 z60010232

    受用了,謝謝  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn)[未登錄](méi) 2009-05-10 09:15

    太強(qiáng)了,非常感謝。我看了上面的講述。問(wèn)題解決了。謝謝  回復(fù)  更多評(píng)論   

    # re: hibernate:one-to-one的學(xué)習(xí)小經(jīng)驗(yàn) 2009-05-15 11:28 jj

    不知道one-to-many能不能自動(dòng)存儲(chǔ)  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    If there is any question you have, please don't hesitate, let me know ASAP, you can find me at kenees@gmail.com or QQ: 9808873, hope to make friends with you ;)

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产欧美国产综合一区 | 亚洲偷自拍另类图片二区| 在线天堂免费观看.WWW| 羞羞漫画在线成人漫画阅读免费| 中文字幕精品亚洲无线码一区应用| 久久久久久一品道精品免费看| 国产成+人+综合+亚洲专| 亚洲伊人久久综合中文成人网| 中文字幕免费在线观看| 久久水蜜桃亚洲AV无码精品| 亚洲精品成人片在线播放 | 日批日出水久久亚洲精品tv| 野花香在线视频免费观看大全 | 久久久久久AV无码免费网站下载 | 蜜芽亚洲av无码一区二区三区| 亚洲国产精品无码久久久秋霞2| 男男AV纯肉无码免费播放无码 | 亚洲国产日韩成人综合天堂| 在线观看免费视频资源| 欧洲精品码一区二区三区免费看| 91亚洲精品自在在线观看| 亚洲色偷拍区另类无码专区| 一二三四影视在线看片免费| 中文字幕免费播放| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲国产精品久久久久婷婷软件 | 国产免费卡一卡三卡乱码| 无码午夜成人1000部免费视频| 国产精品亚洲一区二区三区久久 | 亚洲成a人片在线观看无码专区| 国产成人无码a区在线观看视频免费| 亚在线观看免费视频入口| 日韩大片免费观看视频播放 | 亚洲第一香蕉视频| 亚洲中文字幕久久精品无码APP| 日本特黄a级高清免费大片| 免费h片在线观看网址最新| 无码少妇精品一区二区免费动态 | 中文字幕免费不卡二区| 精品一区二区三区高清免费观看 | 免费看污成人午夜网站|