Grails标准排序和分页

时间:2015-09-21 16:01:01

标签: sorting grails pagination gorm criteria

我正在尝试这样的事情:

    def pagingParams = SortingAndPagingUtils.preparePaging(params)

    def Objs = Obj.createCriteria().list(pagingParams) {
        baseCriteria(params, delegate)
    }

我的pagingParams看起来像:

    [max: pageSize, offset: offset]

和我的baseCriteria创建了一个类似的订单:

    [['field','ASC]]

假设我的页面大小为10.我首先获取10个结果 - 它们确实按field排序。我再拿10个(第二页)。就其本身而言,第二页结果排序很好,但是,它们不会根据第一页结果进行排序。

简单示例:

First page: [10, 9, 9, 9, 8, 7, 6, 5, 4, 3]

Second page: [9, 5, 4, 3, 2, 1, 0 ...]

我该如何解决这个问题?这是正常的还是我错过了什么?

稍后修改:

我观察到,如果我增加页面大小,那么我就不会得到如此未分类的结果(有点明显,但值得一提)

甚至稍后编辑:

我为之前没有说清楚而道歉。以下是baseCriteria方法的样子:

private def baseCriteria(params, builder) {
    def sortOrderPairs = SortingAndPagingUtils.prepareSorting(params)
    def result = {
        sortOrderPairs.each {
            order((it[0] as String), (it[1] as String))
        }
    }
    result.delegate = builder
    result()
}

sortOrderPairs看起来像

    [['field','ASC]]

据我所知,这个

        sortOrderPairs.each {
            order((it[0] as String), (it[1] as String))
        }

应该做的伎俩,对吗?但事实并非如此。

甚至是lateeer编辑

我尝试简化所有内容并且只有

    def tasks = Obj.createCriteria().list(max: pageSize, offset: pageSize * (currentPage - 1)) {
        order('field', 'DESC')
    }

但问题仍然存在!

甚至尝试过

    def tasks = Task.createCriteria().list(max: pageSize, offset: pageSize * (currentPage - 1), sort: 'field', order: 'DESC');

同样的问题

0 个答案:

没有答案