2013-12-08 23 views
2

在我的申请,我已经整理我的域对象如下:Grails的2.3.4排序/的FindAll变化

def o = Domain.findAll(sort: 'lastUpdated')

在Grails的2.2 *,这是工作的罚款,并返回的结果。 。今天,我升级到2.3.4 Grails的,而同样的语法抛出一个错误,指出:

No property found for name [all] for class [sample.Domain]

什么是排序的新语法?

在此先感谢。

回答

11

我会用列表:

def results = Domain.list(sort: "lastUpdated")

+0

这似乎也起作用,比我在下面做的要短一些。感谢您的提示。 –

-1

好,只要我的贴吧,我想通了:Domain.findAll().sort({lastUpdated: 'desc'})

+0

为了该人张贴反对票,请解释。这个方法和zoran119发布的方法都工作并解析为一个'ArrayList'类型的对象。据我所知,没有功能上的差异。卓然的解决方案稍微短一点,所以我现在正在使用这个解决方案,但我想了解您投票背后的理由。 –

+1

可能是因为你正在做你自己的所有排序而不是让你的数据库去做,这会更聪明。去'Domain.list(排序:“lastUpdated”)'。这是做到这一点的方法。 – grantmcconnaughey

4

关于最后一个注释,它可以创建一个非常糟糕的表演问题:

使用Domain.findAll().sort({lastUpdated: 'desc'})您可以在排序任何内容之前加载整个表格。这个请求看起来不错,但假设你有大量的数据,你想添加一个最大值和一个偏移量。否则,请求将花费太多时间。

在另一方面,上面一个是好多了:

def results = Domain.list(sort: "lastUpdated") 

这样做,你只加载需要的数据......仅此而已,无所不及的量。你可以这样加一个偏移量和最大行数的:

def results = Domain.list(max: 10, offset:10, sort: "lastUpdated") 

这不是一个答案,原来的职位,但它解释了为什么之前的评论有一个坏票:)