2012-09-18 134 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') 
} 

这是不支持单向一对多关系,但对于那些双向的伟大工程。