2010-05-06 18 views

Odpowiedz

2

pracy w Grails 1.2.1

def c = C.createCriteria() 
def pl = c.list { 
    projections { 
     countDistinct 'id', 'myCount' 
     groupProperty 'a' 
    } 
    order ('myCount', 'desc') 
} 

odpowiedź jest na przykład

[[10,a3],[2,a1],[1,a2]] 
2

chciałbym spróbować

def c = b.createCriteria() 
def results = c { 
    projections { 
     groupProperty("a") 
     rowCount() 
    } 
    order("a") 
} 

Uwaga Jest niesprawdzone.

+0

To prawie rozwiązuje problem, ale jak mogę dokonać zamówienia według liczby? – skurt

9

Od grails 1.2 można tworzyć aliasy i porządek przez utworzony alias.

Aby uzyskać więcej informacji, zobacz https://cvs.codehaus.org/browse/GRAILS-3875 i https://cvs.codehaus.org/browse/GRAILS-3655.

Stosowany do własnego kodu, kwerenda HQL byłoby:

def c = b.createCriteria() 
def results = c { 
    projections { 
    groupProperty("a") 
    count("a", 'myCount') //Implicit alias is created here ! 
    } 
    order 'myCount' 
} 
+0

Dzięki temu powinno się to zrobić, ale jak zauważa Graeme, jest to przeniesione do grails 1.3 zobacz https://cvs.codehaus.org/browse/GRAILS-3875?focusedCommentId=200866&page=com.atlassian.jira.plugin.system.issuetabpanels % 3Acomment-tabpanel # action_200866 – skurt

+0

Masz zdecydowanie rację! Zobacz http://www.grails.org/1.3-RC2+Release+Notes i sekcję i wygląda na to, że nie jest zaimplementowany ani w wersji 1.3 (problem z rozdzielczością jest równy poprawianiu, a Graeme komentuje, że kod został zmieniony). Więc myślę, że musisz spróbować :-) (Proszę informować nas o wynikach) – fabien7474

+0

count ("a", "myCount") –