Grails: динамический метод findAllBy — расширенное свойство сортировки

У меня есть класс User и класс Item, и у пользователя может быть несколько элементов.

Я хочу выбрать некоторых пользователей на основе другого свойства, используя finndAllByProperty и добавив параметры разбиения на страницы (см. http://www.grails.org/doc/1.2.2/ref/Domain%20Classes/findAllBy.html .)

Проблема в том, что я хочу отсортировать результат в зависимости от того, сколько элементов есть у каждого пользователя. Поэтому я хотел бы сделать что-то вроде:

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

но, конечно, этот "sort:'items.size()'" не работает. Есть ли способ сделать это без добавления свойства itemsNr в домен пользователя, которое будет обновляться при добавлении/удалении каждого элемента?


person cripox    schedule 13.09.2010    source источник


Ответы (1)


Вы пробовали sort: 'count (items)'? HQL предоставляет этот метод для выбора размера коллекции, но я не уверен, что он будет работать через findAllBy*.

Если это не сработает, вам нужно попробовать использовать CriteriaBuilder для достижения того, чего вы хотите.

person leebutts    schedule 13.09.2010
comment
Я пойду с CriteriaBuilder, все равно спасибо за ответ. - person cripox; 14.09.2010