Как делают я перевожу:
SELECT COUNT(*) AS `count`, `a` FROM `b` GROUP BY `a` ORDER BY `a`
в чаши Грааля или запрос gorm?
работаю в grails 1.2.1
def c = C.createCriteria()
def pl = c.list {
projections {
countDistinct 'id', 'myCount'
groupProperty 'a'
}
order ('myCount', 'desc')
}
ответ для примера
[[10,a3],[2,a1],[1,a2]]
Я бы попробовал
def c = b.createCriteria()
def results = c {
projections {
groupProperty("a")
rowCount()
}
order("a")
}
Обратите внимание, что это не проверено.
Начиная с grails 1.2 вы можете создавать псевдонимы и упорядочивать их по созданному псевдониму.
См. https://cvs.codehaus.org/browse/GRAILS-3875 и https://cvs.codehaus.org/browse/GRAILS-3655 для получения дополнительной информации. .
Применительно к вашему собственному коду запрос HQL будет иметь следующий вид:
def c = b.createCriteria()
def results = c {
projections {
groupProperty("a")
count("a", 'myCount') //Implicit alias is created here !
}
order 'myCount'
}