À l'aide de groupProperty et countDistinct dans Graal Critères

Je suis en utilisant le Graal 1.2.4. Je voudrais savoir comment puis-je trier par "countDistinct" (descendant) et avec groupProperty à l'intérieur d'une des projections.

Voici mes domaines:

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)    
    }
}

Dans MySQL, c'est ce que je veux:

select 
    product_id,
    count(product_id)
from
    transaction
group by
    product_id
order by
    count(product_id) desc

En terme général, je voudrais obtenir une liste de produits (ou juste une id de produit) triés par le nombre de transactions un produit (décroissant)

C'est ma conjecture:

def c = Transaction.createCriteria() def transactions = c.list {
    projections {
        groupProperty("product")
        countDistinct("product")
    }
    maxResults(pageBlock)
    firstResult(pageIndex) }

def products = transactions.collect { it[0] }

Mais il ne donne pas mon résultat escompté. Toute initiative de ce sera très appréciée. Merci!

OriginalL'auteur firnnauriel | 2010-09-15