2009-01-21 9 views
5

Come si conta il numero di messaggi in cui la lunghezza del corpo è compresa tra 0 e 25 caratteri?Come contare in Grails/Hibernate: Message.countBy

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

Purtroppo per me, countBy non prende un parametro di stringa.

+0

Per ora ho intenzione di fare l'approccio del povero uomo e caricarlo in una mappa e fare un ciclo for! – user57660

+0

Grazie per la risposta! Non so come 'chiudere' questo messaggio – user57660

+0

Bene, se la risposta ha funzionato allora puoi cliccare sul segno di spunta con la risposta per accettarlo. Se così non fosse, allora puoi aspettare una risposta migliore o commentare perché non ha funzionato. –

risposta

13

Guardando il riferimento metodo dinamico, il migliore probabilmente si può fare è utilizzare executeQuery invece di count*:

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

EDIT: Qui ci sono un paio di link che potrebbero aiutare con la scrittura/esecuzione della query:

+0

Grazie! Non puoi fare la lunghezza del mio corpo che ho scoperto. Devi fare SIZE (m.body) Ma molto vicino – user57660

+0

Lo cambierò. Non ero sicuro dell'esatto HQL, avevo appena copiato quello che stavi usando, ma con un metodo GORM diverso. –