2010-09-13 8 views
0

J'ai une classe User et une classe Item et un utilisateur peut avoir plusieurs éléments.Grails: méthode dynamique findAllBy - propriété de tri avancée

Je veux sélectionner des utilisateurs en fonction d'autres biens en utilisant finndAllByProperty et en ajoutant les paramètres de pagination (voir http://www.grails.org/doc/1.2.2/ref/Domain%20Classes/findAllBy.html.)

Le problème est que je veux trier les résultats en fonction du nombre des éléments de chaque utilisateur Je aimerait faire quelque chose comme:

myUsers = User.findAllByProperty(propertyInstance,[max:10, offset:offset, sort:'items.size()', order:"desc"])

mais bien sûr que "sort: 'items.size()'" ne fonctionne pas. Est-ce un moyen de le faire sans ajouter une propriété itemsNr dans le domaine utilisateur qui mettra à jour sur chaque élément ajouté/supprimé?

Répondre

1

Avez-vous essayé de: 'count (items)'? HQL fournit cette méthode pour sélectionner la taille d'une collection mais je ne suis pas sûr que cela fonctionnera via findAllBy *

Si cela ne fonctionne pas, vous devrez l'essayer avec CriteriaBuilder pour obtenir ce que vous voulez .

+0

ça ne marche pas, j'ai peur. – cripox

+0

Je vais aller avec CriteriaBuilder, merci pour la réponse de toute façon. – cripox

Questions connexes