2010-05-06 3 views

Antwort

2

in Grails Arbeits 1.2.1

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

die Antwort ist zum Beispiel

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

würde ich

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

Hinweis versuchen, dies nicht getestet wird.

+0

Das löst das Problem fast, aber wie sortiere ich nach Anzahl? – skurt

9

Seit Grails 1.2 können Sie Aliase erstellen und nach dem erstellten Alias ​​sortieren.

Weitere Details finden Sie unter https://cvs.codehaus.org/browse/GRAILS-3875 und https://cvs.codehaus.org/browse/GRAILS-3655.

zu Ihrem eigenen Code angewandt, würde die HQL-Abfrage sein:

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

Thanks dies sollte es tun, aber wie Graeme feststellt, dass dies in Grails 1.3 bewegt wird, siehe https://cvs.codehau.org/browse/GRAILS-3875?focusedCommentId=200866&page=com.atlassian.jira.plugin.system.issuetabpanels % 3Acomment-tabpanel # action_200866 – skurt

+0

Sie haben definitiv Recht! Siehe http://www.grails.org/1.3-RC2+Release+Notes und Abschnitt und es scheint, dass es nicht in 1.3 implementiert ist (wobei das Auflösungsproblem gleich ist und Graeme kommentiert, dass der Code geändert wurde). Also ich denke, dass Sie einen Versuch machen müssen :-) (Bitte halten Sie uns über die Ergebnisse informiert) – fabien7474

+0

count ("a", "myCount") –