【问题标题】:Filtering a collection with offset in grails在grails中过滤带有偏移量的集合
【发布时间】:2013-04-09 10:39:40
【问题描述】:

我正在尝试使用 findAll 过滤 grails 中的集合,因此我只在他的字段“estado”中获取具有特定值的实例。
我有这样的事情:

trabajos.findAll({it.estado.equals( "Pago")})

问题是我不知道如何对返回的集合进行分页。
我查看了 grails 文档并找到了这个

Book.findAll(Map queryParams, Closure whereCriteria)

但是当我尝试它时

trabajos.findAll([offset: 0], {it.estado.equals("Pago")})

我得到以下异常

No signature of method: java.util.ArrayList.findAll() is applicable for argument types:       (java.util.LinkedHashMap, com.publidirecta.PersonalController$_show_closure2) values: [[offset:0], com.publidirecta.PersonalController$_show_closure2@a6bdb0] 
Possible solutions: findAll(), findAll(), findAll(groovy.lang.Closure), findAll(groovy.lang.Closure), find(), find()`  

这是为什么要实现某种分页的原因还是我必须手动完成?

【问题讨论】:

    标签: grails collections dynamic-finders


    【解决方案1】:

    我猜你搞砸了两件事:grails 和 groovy。
    Book.findAll(Map queryParams, Closure whereCriteria) - 是数据库中的查找器,它是 grails 的东西,你可以在其中传递 max 参数。
    但是在trabajos.findAll({it.estado.equals( "Pago")}) 中,您正试图在列表中查找。这是很时髦的事情。查看更多详情 herehere

    如果您尝试从数据库中获取对象,请像这样使用

    Book.findAll(Map queryParams, Closure whereCriteria).

    如果是对象列表,请使用以下内容:

    def filtered = trabajos.findAll({it.estado.equals( "Pago")})
    def result = filteredList[offset..offset+max < filtered.size() ? offset+max : filtered.size()]
    

    【讨论】:

    • 好的,我看到了错误。现在我尝试使用 maxResults(3) 和 firstResult(0) 在闭包内实现它,但这也不起作用
    猜你喜欢
    • 2019-02-18
    • 2021-10-13
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多