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

Chinaunix

標題: 用criteria進行關(guān)聯(lián)查詢--hibernate 的ResultTransformer [打印本頁]

作者: wangyan_230    時間: 2009-05-27 15:29
標題: 用criteria進行關(guān)聯(lián)查詢--hibernate 的ResultTransformer

引用
兩個實體 Parent(P) 和 Child(C)之間是1:N的關(guān)系,現(xiàn)要求符合指定條件的P及所包 含的C
采用hibernate中的Criteria來實現(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返回的是一個對象數(shù)組的list,數(shù)組的長度為2,依次是一個Child對象和一個Parent對象,這種返回結(jié)果的方式是所需要的;但是,倘若將中間三條獲取總記錄數(shù)的代碼去掉,則返回是Parent對象的list,且其相關(guān)的Child子對象也沒有加載進來。造成這種差別的便是 ResultTransformer
    API中對 ResultTransformer 的說明如下:
    引用
    Implementors define a strategy for transforming criteria query results into the actual application-visible query result list.
    從上可知,criteria會使用此接口的某一實現(xiàn)來將查詢結(jié)果轉(zhuǎn)化為返回的list中實際存儲的結(jié)果。criteria中的方法 setResultTrans 可用于設(shè)置所使用的轉(zhuǎn)化策略。其可設(shè)置的值如下:

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

  • criteria.setProjection(null);  


    本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/57965/showart_1946316.html
    作者: ccd135    時間: 2012-08-26 17:29
    它返回值取的是數(shù)組中的最后一個對象,也即根實體對象




    歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2