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

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

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

    Jason ---分享,共同進步

    激情成就夢想,努力創造未來
    隨筆 - 53, 文章 - 1, 評論 - 45, 引用 - 0
    數據加載中……

    hibernate 一對多集合 set查詢問題

    今天解決了一個問題(如題),這個問題一致沒有解決,以前的項目中也遇到過但是都沒有花時間去研究,這回徹底的整理了一下。問題如:一個老師類(Teacher)和一個學生類(User),一個老師有多個學生,當然這個例子不夠好,不管怎樣就是這個意思,老是對應多個學生,oneto many

     

            <set name="users" inverse="true" order-by="column" ><!-- sort="natural"   -->
                <key>
                    <column name="teacher_id" length="36">
                        <comment>老師表主鍵</comment>
                    </column>
                </key>
                <one-to-many class="User" />
            </set>

     

    以前遇到這個問題,都是通過lazy=false來實現,雖然能實現效果但是效率上會有問題也會產生N+1的查詢問題。

    我一致比較喜歡使用 hibernate的 left join fetch 方式來抓取結構,但是我現在是要在查詢老師的列表中顯示他所有的學生,如果用 select teacher from Teacher teacher left join fetch teacher.users這樣的方式來得到學生集合,這樣老師的數據集合會有重復數據,不知我這樣說是否理解,如果遇到我這樣的問題應該比較了解了,使用了很多方法也沒有通過,當然實現這個效果可以有別的方式(虛列方式,或這采用 native sql ),我現在就是針對這種抓取的方式(暫時還是沒有找到方案,如果知道的可以告訴我),我現在采用的方式還是上面的抓取方式,出現的重復數據,我把結果集拿出來之后,把重復的數據過濾掉,這樣暫時能解決問題。然后是后面的出去的users 排序的問題,默認我們使用的set set大家都知道是沒有順序的,我們一種方式是 order-by="column" 上面的,采用這種方式來實現排序,另一種方式是采用 sort="natural" 方式來實現,但是如果要用sort方式就需要實現compareble 接口 實現 compareTo 方法 來自定義比較的規則,第二種方式我試驗一下有點問題,他們的原理都是通過這兩個規則 指定set最后的實現類 。

    posted on 2011-08-19 17:21 agun 閱讀(2019) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 99久久精品日本一区二区免费| 亚洲人AV在线无码影院观看| 全黄A免费一级毛片| 国产精品免费视频网站| 亚洲人成777在线播放| 无码成A毛片免费| 亚洲AV无码乱码国产麻豆| 成人性生交大片免费看中文| 国产精品亚洲A∨天堂不卡| 国产自国产自愉自愉免费24区 | 久久大香香蕉国产免费网站| 亚洲va无码手机在线电影| 国产永久免费高清在线| 亚洲色偷偷偷网站色偷一区| 妻子5免费完整高清电视| 亚洲国产精品免费观看| 四虎成人精品在永久免费| 精品久久久久久国产免费了| 国产性爱在线观看亚洲黄色一级片| 无码精品人妻一区二区三区免费| 亚洲色精品vr一区二区三区| 99视频免费播放| 亚洲人成网站免费播放| 亚洲精品乱码久久久久久不卡 | 亚洲免费日韩无码系列| 亚洲爆乳无码一区二区三区| 久草视频免费在线观看| 在线看亚洲十八禁网站| 久久99国产亚洲高清观看首页| 国产91免费视频| 国产精品亚洲色图| 精品亚洲永久免费精品| 毛片免费在线播放| CAOPORN国产精品免费视频| 亚洲神级电影国语版| 国产福利免费在线观看| 一级毛片免费不卡在线| 亚洲1区2区3区精华液| 久久亚洲国产伦理| 国产国产人免费人成免费视频| 国产va在线观看免费|