亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 44514 | 回復(fù): 1
打印 上一主題 下一主題

用criteria進(jìn)行關(guān)聯(lián)查詢--hibernate 的ResultTransformer [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-05-27 15:29 |只看該作者 |倒序?yàn)g覽

引用
兩個(gè)實(shí)體 Parent(P) 和 Child(C)之間是1:N的關(guān)系,現(xiàn)要求符合指定條件的P及所包 含的C
采用hibernate中的Criteria來實(shí)現(xiàn)此功能的代碼如下:
Java代碼
[/url]
  • Criteria criteria = this.getCriteria(Parent.class);   
  • //連接關(guān)聯(lián)子對象child,且指定了連接方式為左外連接    
  • criteria.createAlias("children", "c", CriteriaSpecification.LEFT_JOIN));   
  • //下面三行代碼是用于獲取總的記錄數(shù)    
  • criteria.setProjection(Projections.rowCount());   
  • int size = (Integer) criteria.uniqueResult();   
  • criteria.setProjection(null);   
  •    
  • List results = criteria.list();  Criteria criteria = this.getCriteria(Parent.class);
    //連接關(guān)聯(lián)子對象child,且指定了連接方式為左外連接
    criteria.createAlias("children", "c", CriteriaSpecification.LEFT_JOIN));
    //下面三行代碼是用于獲取總的記錄數(shù)
    criteria.setProjection(Projections.rowCount());
    int size = (Integer) criteria.uniqueResult();
    criteria.setProjection(null);
    List results = criteria.list();
    上面的results返回的是一個(gè)對象數(shù)組的list,數(shù)組的長度為2,依次是一個(gè)Child對象和一個(gè)Parent對象,這種返回結(jié)果的方式是所需要的;但是,倘若將中間三條獲取總記錄數(shù)的代碼去掉,則返回是Parent對象的list,且其相關(guān)的Child子對象也沒有加載進(jìn)來。造成這種差別的便是 ResultTransformer
    API中對 ResultTransformer 的說明如下:
    引用
    Implementors define a strategy for transforming criteria query results into the actual application-visible query result list.
    從上可知,criteria會(huì)使用此接口的某一實(shí)現(xiàn)來將查詢結(jié)果轉(zhuǎn)化為返回的list中實(shí)際存儲(chǔ)的結(jié)果。criteria中的方法 setResultTrans 可用于設(shè)置所使用的轉(zhuǎn)化策略。其可設(shè)置的值如下:

    Criteria中默認(rèn)使用的 ResultTransformer 實(shí)現(xiàn)策略是 ROOT_ENTITY;但是當(dāng)調(diào)用了方法 setProjection后,會(huì)隱式地將策略設(shè)置為 PROJECTION。所以,才會(huì)出現(xiàn)上例中的兩種不同結(jié)果。如果希望返回的結(jié)果是數(shù)組形式的,則可以多加上如下這條語句:
    Java代碼
    [url=http://lionheart.javaeye.com/blog/170148#]

  • criteria.setProjection(null);  


    本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u1/57965/showart_1946316.html
  • 論壇徽章:
    0
    2 [報(bào)告]
    發(fā)表于 2012-08-26 17:29 |只看該作者
    它返回值取的是數(shù)組中的最后一個(gè)對象,也即根實(shí)體對象
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報(bào)專區(qū)
    中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP