Запрос по нескольким доменным объектам в Grails - PullRequest
3 голосов
/ 03 февраля 2011

Я создаю страницу «Недавние действия» только для того, чтобы дать некоторое представление.В основном эта страница будет представлять собой смесь нескольких различных действий, выполняемых пользователем.Проблема заключается в том, что эти данные охватывают несколько (около 3) типов объектов домена, все с разными полями.Все домены связаны с объектом User, но ассоциации различаются.

Домены UserPost, FriendRequest и UserTask.Есть ли способ я могу запросить все эти домены, поддержка нумерации страниц и порядок по дате создания?Будет ли лучше изменить мою структуру?Любая помощь будет отличной!

1 Ответ

5 голосов
/ 03 февраля 2011

Я реализовал аналогичную функцию для своего веб-сайта, и я пришел к выводу, что лучше добавить класс домена деятельности, который регистрирует все виды действий.Допустим,

class Activity {
  Date dateCreated
  String linkClassName
  Long linkId

  def getLink() { getClass().classLoader.loadClass(linkClassName).get(linkId) }
}

Затем, когда вы вставляете новую запись в свои UserPost, FriendRequest и UserTask (или что-то еще), вы также создаете новую запись в Activity, используя afterInsert события GORM следующим образом:

def afterInsert = {
  new Activity(linkClassName: this.class.name, linkId: this.id).save()
}

После того, как вы это сделаете, вы можете получить информацию о своих недавних действиях, например:

def activities = Activity.list(max: 5, sort:'dateCreated', order:'desc')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...