Grails: динамический метод findAllBy - расширенное свойство сортировки - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть класс 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 в домен пользователя, которое будет обновляться при каждом добавлении / удалении элементов?

1 Ответ

1 голос
/ 14 сентября 2010

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

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

...