Grails中跨多个域对象的查询

Grails中跨多个域对象的查询,grails,Grails,我正在建立一个“最近的活动”页面,只是为了提供一些背景信息。基本上,这个页面将是用户执行的几个不同操作的聚合。问题在于,该数据跨越多个(3个左右)域对象类型,所有域对象类型都具有不同的字段。所有域都与用户对象关联,但关联不同 这些域是UserPost、FriendRequest和UserTask。有没有一种方法可以查询所有这些域,支持分页和按日期排序?改变我的结构会更好吗?任何帮助都会很好 我已经为我的网站实现了类似的功能,我得出结论,最好添加一个活动域类来记录所有类型的活动。 比方说 clas

我正在建立一个“最近的活动”页面,只是为了提供一些背景信息。基本上,这个页面将是用户执行的几个不同操作的聚合。问题在于,该数据跨越多个(3个左右)域对象类型,所有域对象类型都具有不同的字段。所有域都与用户对象关联,但关联不同


这些域是UserPost、FriendRequest和UserTask。有没有一种方法可以查询所有这些域,支持分页和按日期排序?改变我的结构会更好吗?任何帮助都会很好

我已经为我的网站实现了类似的功能,我得出结论,最好添加一个活动域类来记录所有类型的活动。 比方说

class Activity {
  Date dateCreated
  String linkClassName
  Long linkId

  def getLink() { getClass().classLoader.loadClass(linkClassName).get(linkId) }
}
然后,每当您在UserPost、FriendRequest和UserTask(或其他)中插入新记录时,您也可以使用
afterInsert
在Activity中创建一个新条目,如下所示:

def afterInsert = {
  new Activity(linkClassName: this.class.name, linkId: this.id).save()
}
完成此操作后,您可以检索最近的活动,如下所示:

def activities = Activity.list(max: 5, sort:'dateCreated', order:'desc')

我喜欢这个解决方案,我认为它会非常有效。我可以非常灵活,不必写疯狂的查询。谢谢