2010-05-06 6 views

Respuesta

2

trabajar en griales 1.2.1

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

la respuesta es, por ejemplo,

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

me gustaría probar

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

en cuenta esto es puesto a prueba.

+0

Esto casi resuelve el problema, pero ¿cómo puedo ordenar por conteo? – skurt

9

Como Grails 1.2 puede crear alias y ordenar por el alias creado.

Consulte https://cvs.codehaus.org/browse/GRAILS-3875 y https://cvs.codehaus.org/browse/GRAILS-3655 para obtener más información.

aplicado a su propio código, la consulta HQL sería:

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

Gracias esto debería hacerlo, pero como Graeme nota esto se mueve a grillas 1.3 ver https://cvs.codehaus.org/browse/GRAILS-3875?focusedCommentId=200866&page=com.atlassian.jira.plugin.system.issuetabpanels % 3Acomment-tabpanel # action_200866 – skurt

+0

¡Tienes toda la razón! Ver http://www.grails.org/1.3-RC2+Release+Notes y sección y parece que no está implementado en 1.3 (mientras que el problema de resolución es igual a fijo y Graeme comenta que el código fue cambiado). Entonces, creo que debes intentarlo :-) (Manténganos informados sobre los resultados) – fabien7474

+0

count ("a", "myCount") –