2009-01-21 12 views
5

¿Cómo cuento la cantidad de mensajes en los que la longitud de mi cuerpo tiene entre 0 y 25 caracteres?Cómo contar en Grails/Hibernate: Message.countBy

Message.countBy('from Message m where m.body.length <= 25') 

Por desgracia para mí, countBy no tarda un parámetro de cadena.

+0

Por ahora solo voy a hacer el enfoque del pobre y cargarlos en un mapa y hacer un bucle for! – user57660

+0

¡Gracias por la respuesta! No sé cómo "cerrar" este mensaje – user57660

+0

Bueno, si la respuesta funcionó, puede hacer clic en la marca de verificación junto a la respuesta para aceptarla. Si no fue así, entonces puede esperar una mejor respuesta o comentar por qué no lo hizo. –

Respuesta

13

En cuanto a la referencia al método dinámico, lo mejor que puede hacer probablemente es utilizar executeQuery en lugar de count*:

Message.executeQuery('select count(m) from Message m where SIZE(m.body) < 25') 

EDIT: Aquí hay un par de enlaces que pueden ayudar con la escritura/ejecución de la consulta:

+0

¡Gracias! No puedes hacer m.body.length lo he descubierto. Tienes que hacer TAMAÑO (m.body) Pero muy cerca – user57660

+0

Lo cambiaré. No estaba seguro del HQL exacto, acababa de copiar lo que estaba usando, pero con un método GORM diferente. –