Сортировка списка ссылок в grails

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

  • Пользователь
  • Почта

У пользователя много сообщений, и сообщение принадлежит пользователю.

Теперь я пытаюсь получить список сообщений для конкретного пользователя в порядке даты.

Я знаю, что могу получить список всех сообщений (для всех пользователей):

def posts = Post.list([sort: 'dateCreated', order: 'asc', max:10])

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

def user = User.findByUserId(userId)
def posts = user.posts

Итак, теперь он вернет список всех сообщений для этого пользователя, но как организовать этот список, чтобы они были упорядочены, например [sort: 'dateCreated', order: 'asc', max: 10], чтобы получить первые 10 в правильном порядке?

Или я просто ошибаюсь?


person Stevo    schedule 18.08.2009    source источник


Ответы (2)


Обновление на основе беседы:

def user = User.findByUserId('steve')
def posts = Post.findAllByUser(user, [sort: 'dateCreated', order:'asc', max: 10])
person Robert Munteanu    schedule 18.08.2009
comment
Это хорошо, но могу ли я ограничить извлечение из БД партией из 10? Или мне нужно получить все, а затем манипулировать памятью? - person Stevo; 18.08.2009
comment
Я думаю, что вы должны иметь возможность использовать GORM для получения сообщений, используя что-то похожее на Post.findByUser (user, [sort: 'dateCreated', order: 'asc', max: 10]). См. grails.org/doc/1.1.x/ref/Domain % 20Classes / findAllBy.html - person Robert Munteanu; 18.08.2009
comment
Милая! def user = User.findByUserId ('steve') def posts = Post.findAllByUser (user, [sort: 'dateCreated', order: 'asc', max: 10]) Спасибо! - person Stevo; 18.08.2009
comment
Впоследствии принято для комментария Роберта. - person Stevo; 18.08.2009

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

static mapping = {
    posts sort:'dateCreated', batchSize:10
}
person Dave Klein    schedule 18.08.2009
comment
Хороший звонок, Дэйв :-) grails.org/doc/1.1.1/guide/ Имейте в виду, что порядок еще не работает для сопоставления dsl: jira.codehaus.org/browse/GRAILS-3778 - person Colin Harrington; 19.08.2009