2012-02-07 2 views
13

기준으로 grails를 쿼리하고 목록 목록 대신지도 목록을받을 수 있습니까? 그 결과 숫자 배열 오프셋 대신 '연관 배열'을 사용하기 위해 결과에 열 이름을 넣고 싶습니다. 나는 현재 [[123, app.User:1][111, app.User:2][...]...] 결과기준이있는 Grails 쿼리 : 열이있는지도를 다시 얻는 방법?

def topFiveUsers = BlogEntry.createCriteria().list { 
     projections { 
      count('id') 
      groupProperty('author') 
     } 
     maxResults 5 
    } 

같은, 목록, 즉 목록을한다. 차라리 [[posts:123, author: app.User:1][posts: 111, author app.User:2][...]...]과 같은 것을 원합니다.

언제나 : 도움을 주시면 대단히 감사하겠습니다!

답변

2
def topFiveList = [] 
topFiveUsers.each { rec -> 
    topFiveList << [posts: rec[0], author: rec[1]] 
} 
2
def converted = topFiveUsers.collect{ [posts: it[0], author: it[1]] } 
+0

답장을 보내 주셔서 감사합니다. 물론 나중에 결과를 변환 할 수 있습니다 - 그 순간에 내가하고있는 일입니다. 그런 다음 결과 세트를 사후 처리하는 오버 헤드를 건너 뛰고 싶습니다. 나는 동면 코드의 어딘가에서 어쨌든 매우 동일한 변환이 일어난다 고 생각합니다 ... – fluxon

+0

게시 한 직후, 당신은 2 단계 솔루션에 관심이 없다고 생각했습니다. –

+0

걱정할 필요가 없습니다! 어쨌든 당신의 지원에 감사드립니다! se는 다만 중대하다! – fluxon

30

사용 resultTransformer(). 매개 변수로 사용 CriteriaSpecification.ALIAS_TO_ENTITY_MAP
이 항목에 대한 설명서와 예제는 부족합니다. 하지만 여기에 예가 있습니다 :

import org.hibernate.criterion.CriteriaSpecification 

BlogEntry.withCriteria { 
    maxResults 5 
    resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP) 
    projections { 
    count('id', 'total') 
    groupProperty('author', 'author') 
    }  
} 

모든 투영에는 별칭이 필요합니다. 그렇지 않은 경우 결과 맵은 널 (null)로 구성됩니다.

+0

화려하고 우아합니다. Sergey 대단히 감사합니다. –

+0

Excellent ....... 대단히 감사합니다 .... – akiong

관련 문제