在grails中过滤一个具有偏移量的集合

问题描述:

我想用findAll在grails中过滤一个集合,所以我只在他的字段“estado”中获得具有特定值的实例。
我有这样的事情:在grails中过滤一个具有偏移量的集合

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], [email protected]] 
Possible solutions: findAll(), findAll(), findAll(groovy.lang.Closure), findAll(groovy.lang.Closure), find(), find()` 

这是个所以然来实现一些这种分页的原因是什么,或者我会不得不手动去做?

我想你是混蛋2件事: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()] 
+0

好吧,我看到的错误。现在我试图用maxResults(3)和firstResult(0)来实现它,但这也是剂量工作 – user1485182 2013-04-09 11:19:52

+0

它shuldn​​'t。见编辑的答案。 – 2013-04-09 12:57:55