2013-04-09 69 views
1

我想用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()` 

這是個所以然來實現一些這種分頁的原因是什麼,或者我會不得不手動去做?

回答

0

我想你是混蛋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

相關問題