我有像
这样的自我引用域User{
static hasMany=[friends:User]
}
我可以为这样的用户获取所有朋友:
user.friends
但是我需要在我没有想法的地方应用分页,有什么建议吗?
答案 0 :(得分:2)
您可以使用条件来检索用户对象。多亏了这一点,你将能够使用分页:
int maxElementsPerPage = 15
User.createCriteria().list(offset: currentPage * maxElementsPerPage,
max: maxElementsPerPage) {
// condition here
'in' ('id', user.friends*.id)
// I'm not sure if you need to put '*.id'
}
你只需要增加'currentPage'就可以获得下一页的元素。
对于Grails标准,您应该查看official Grails criteria documentation
或者,您可以在GSP中使用Grails标记(它将处理所有内容):
<g:paginate controller="user" action="list" total="${userCount}" />
更多详情here。
答案 1 :(得分:2)
如果你的域类中有一个集合,你需要分页,你应该一对一地进行单向:
class User {
static belongsTo = [ friend:User ]
}
否则GORM必须缓存hasMany
id。
然后查询将如下:
def friends = User.findAllByFriend( user, [ max:100, offset:0 ] )