3
我正在构建一个“最近活动”页面来给出一些背景。基本上这个页面将是用户执行的几个不同动作的混搭。问题是这些数据跨越多个(3个左右)域对象类型,并且都有不同的字段。所有域都与用户对象关联,但关联不同。在Grails中跨多个域对象的查询
这些域是UserPost,FriendRequest和UserTask。有没有办法我可以查询所有这些域名,支持分页和按日期排序创建?改变我的结构会更好吗?任何帮助将是伟大的!
我正在构建一个“最近活动”页面来给出一些背景。基本上这个页面将是用户执行的几个不同动作的混搭。问题是这些数据跨越多个(3个左右)域对象类型,并且都有不同的字段。所有域都与用户对象关联,但关联不同。在Grails中跨多个域对象的查询
这些域是UserPost,FriendRequest和UserTask。有没有办法我可以查询所有这些域名,支持分页和按日期排序创建?改变我的结构会更好吗?任何帮助将是伟大的!
我已经为我的网站实现了类似的功能,并得出结论:最好添加一个活动域类来记录所有类型的活动。 假设
class Activity {
Date dateCreated
String linkClassName
Long linkId
def getLink() { getClass().classLoader.loadClass(linkClassName).get(linkId) }
}
然后,每当你在UserPost插入新记录,FriendRequest和UserTask(或其他),创建与使用afterInsert
GORM events如下以及在活动的新条目:
def afterInsert = {
new Activity(linkClassName: this.class.name, linkId: this.id).save()
}
一旦你做到了这一点,你可以检索你最近的活动是这样的:
def activities = Activity.list(max: 5, sort:'dateCreated', order:'desc')
我喜欢这个解决方案,我认为它会工作得很好。我可以非常灵活地编写疯狂的查询。谢谢! – RyanLynch 2011-02-03 10:04:51