Usando groupProperty e countDistinct nos critérios Grails
Estou usando o Grails 1.2.4. Gostaria de saber como posso classificar por "countDistinct" (decrescente) e com groupProperty dentro de uma projeção.
Aqui estão meus domínios:
class Transaction {
static belongsTo = [ customer : Customer, product : Product ]
Date transactionDate = new Date()
static constraints = {
transactionDate(blank:false)
}
}
class Product {
String productCode
static constraints = {
productCode(blank:false)
}
}
Em termos do MySQL, é isso que eu quero:
select
product_id,
count(product_id)
from
transaction
group by
product_id
order by
count(product_id) desc
Em termos gerais, gostaria de obter uma lista de produtos (ou apenas o ID do produto) classificados pelo número de transações que um produto teve (descendente)
Este é o meu palpite:
def c = Transaction.createCriteria() def transactions = c.list {
projections {
groupProperty("product")
countDistinct("product")
}
maxResults(pageBlock)
firstResult(pageIndex) }
def products = transactions.collect { it[0] }
Mas não dá o meu resultado esperado. Qualquer vantagem sobre isso será muito apreciada. Obrigado!