我有这个controller.method 渲染与配置文件关联的所有内容,并具有正确的偏移量和gsp中分页的最大值
if (profil) {
def max = params.max ? params.max as int : 5
def offset = params.offset ? params.offset as int : 0
List things = []
things = Things.findAllByProfil(profil,[max: max, offset: offset, sort: 'dtCreated', order: 'desc'])
[profil: profil, things: things, thingsCount: things.size()]
}
但现在我有一个特殊的“聚合配置文件”,它有一些相关的配置文件,我想把所有相关配置文件的所有东西都放在一个列表中,比如:
if (profil) {
def max = params.max ? params.max as int : 5
def offset = params.offset ? params.offset as int : 0
List things = []
if(profil.typ == 'Aggregate'){
List profiles = profil.profiles?.collect { Profil.collection.findOne(_id:it.id) }
profiles.each() { pr ->
if(pr) {
things+= Things.findAllByProfil(pr as Profil,[max: max,offset: offset, sort: 'dtCreated', order: 'desc'])
}
}
things.sort{a,b-> b.dtCreated<=>a.dtCreated}
}else{
things = Things.findAllByProfil(profil,[max: max, offset: offset, sort: 'dtCreated', order: 'desc'])
}
[profil: profil, things: things, thingsCount: things.size()]
}
但是这种方式我对每个关联的配置文件使用offset
andmax
多次,所以结果列表太大了。
不幸的是,结果设计应该保持不变,所以assert params.max == 5 && profil.typ == "Aggregate"
,第一页的结果是一个包含所有配置文件的 5 个最新内容的列表(因为我将它们全部放在一个列表中并按 dtCreated 对它们进行排序)和我的问题也许:如何将相同的切片逻辑应用于聚合列表(以及如何以高效的方式聚合事物)
解决这个问题的最佳方法是什么?
提前感谢任何提示