1

我正在尝试使用 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()`  

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

4

1 回答 1

0

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

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

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()]
于 2013-04-09T10:58:43.050 回答