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

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

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

    七郎's JavaBlog

    草木竹石皆可為劒。至人之用人若鏡,不將不迎,應而不藏,故能勝物而不傷。
    posts - 60, comments - 14, trackbacks - 0, articles - 0

    Hibernate提供了HQL,方便查詢的編寫。但是在某些情況下,我更喜歡用Criteria,因為它的語義非常明確。

    在處理對象關聯的時候,經常要對對象下的某個集合字段進行條件限制。比如下面的類:

    public class MainClass{  protected long id;  protected int type;  protected Set<SubClass> subs= new HashSet<SubClass>();  ......  getter/setter}  public class SubClass{  protected long id;  protected int value;  protected Set<MainClass> ms = new HashSet<MainClass>();  ...... getter/setter} 

    在初始化數據中,假設MainClass的實例m1含有SubClass的實例s1,s2,s3;MainClass的實例m2含有SubClass的實例s2,s3,s4。

    而其中s1,s2,s3,s4的value分別是1,2,3,4 

    現在要查詢出 MainClass中SubClass集合含有SubClass實例value為2的的MainClass實例并且type為1,可以使用下面的查詢方法:

      DetachedCriteria criteria = DetachedCriteria        .forClass(MainClass.class);  criteria.add(        Restrictions.eq("type", new Integer(1)))        .createAlias("subs", "s").add(             Restrictions.eq("s.value", new Integer(2)));

    執行此查詢對象后會得到符合條件的MainClass實例。

    需要注意的是在獲取的MainClass實例中,subs是完全的記錄集,而不是經過過濾的記錄集,也就是相當于根據MainClass的ID獲取的完整實例一樣。

    ps: 

      如果需要過濾subs的記錄集,需要使用額外的過濾方法,請參考Hibernate的具體實現。

      使用HQL也可以很方便地實現,但是需要給出完整的join標記,不如createAlias來得方面和直觀。 


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


    網站導航:
     
    主站蜘蛛池模板: 一区二区三区无码视频免费福利 | 亚洲色欲色欲www| 日韩高清在线免费看| 中文字幕免费人成乱码中国| 亚洲美女精品视频| 国产成人aaa在线视频免费观看 | 亚洲高清中文字幕| 国产又大又黑又粗免费视频| 久久免费区一区二区三波多野| 亚洲一区二区无码偷拍| 精品久久香蕉国产线看观看亚洲| 成年人免费的视频| 三年片在线观看免费西瓜视频| 亚洲精品无码不卡在线播放| 亚洲国产成人高清在线观看| 日韩免费无砖专区2020狼| 久久这里只精品国产免费10| 久久精品国产亚洲AV天海翼| 2022年亚洲午夜一区二区福利 | 亚洲av乱码一区二区三区按摩| 亚洲国产精品福利片在线观看| 麻豆国产人免费人成免费视频| 最近中文字幕免费完整| 春意影院午夜爽爽爽免费| 亚洲av午夜精品无码专区| 国产AV无码专区亚洲AV男同| 国产成人精品男人免费| 19禁啪啪无遮挡免费网站| 皇色在线免费视频| 国产亚洲漂亮白嫩美女在线| 亚洲人成7777| 亚洲国产成人久久精品app| 亚洲精品无码乱码成人 | 亚洲日本va在线视频观看| 国产麻豆免费观看91| 精品久久久久国产免费| 99视频免费播放| 97国免费在线视频| 无码毛片一区二区三区视频免费播放 | 91福利免费体验区观看区| aaa毛片免费观看|