将分页选项应用于Grails中的一对多列表

时间:2010-04-10 03:19:26

标签: grails groovy

我有一个用户类hasMany = [friends:User]

现在我正在尝试显示好友列表 - $ {user.friends}

但是,我希望能够像我一样应用参数,例如User.findAllBy(user,[max:10,sort:'dateCreated',order:'desc“])

有人可以告诉我如何在Grails / Groovy的一对多中做到这一点吗?

2 个答案:

答案 0 :(得分:3)

我使用HQL:

String hql = '''
select u from User u, User u2
where u in elements(u2.friends) and u2=:user
order by u.dateCreated desc
'''
int max = ...
int offset = ...
def friends = User.executeQuery(hql, [user: user], [max: max, offset: offset])

您可以尝试过滤好友集合,但是只要您对它进行任何操作,它就会从数据库中完全加载,因此如果您只想要10个实例,则会浪费其他所有内容。< / p>

答案 1 :(得分:0)

我刚刚看到Grails的GORM Labs插件,它提供了以下功能

“对于每个”hasMany“属性,现在有一个关联方法,它采用分页属性(”offset“和”max“)并生成相应的页面。还有一个”countBars“实例属性将提供总数“bars”集合的大小。如果先前尚未初始化集合,则所有这些都是通过单独的数据库查询完成的,因此您可以避免加载集合的所有元素“

http://www.grails.org/plugin/gorm-labs