在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")})
中,您正在尝试查找列表中。这是很时髦的事情。查看更多详细信息here和here
如果试图从数据库中获取的对象,这样使用
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)来实现它,但这也是剂量工作 – user1485182 2013-04-09 11:19:52
它shuldn't。见编辑的答案。 – 2013-04-09 12:57:55