2012-09-18 311 views
4

我想按日期排序Grails中收集我目前在做的Grails集合以下幾點:按日期排序

def pics = Picture.findAllByChild(child, [sort: 'dateCreated', order: 'desc']) 
pics.add(Post.findAllByPostedToAll(true)) 

因爲我已經添加更多的項目到列表中,我需要重新排序dateCreated降 它看起來不像排序類可以做到這一點。 我曾嘗試:

pics.sort(it.dateCreated) 

但是,這是不允許的

+1

你是什麼意思,但這是不允許的?你得到什麼樣的錯誤信息?等 – cdeszaq

回答

12

sort方法需要一個封閉的說法,所以正確的電話(與隱含的括號)是

pics.sort { it.dateCreated } 
+0

在上述方法中,有沒有一種方法來定義順序?如'asc'或'desc' – Visahan

+0

在排序後使用.reverse()函數是唯一的解決方案嗎? – Visahan

+1

@Visahan關閉可以作爲一個比較器,所以'{a,b - > b.dateCreated <=> a.dateCreated}'會反向排序。 – doelleri

2

你也可以改變關聯上的默認排序。

在畫面中域類添加:

static mapping = { 
    child(sort:'dateCreated', order:'desc') 
} 

這是不支持單向一對多關係,但對於那些雙向的偉大工程。