2013-12-08 25 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") 

這不是一個答案,原來的職位,但它解釋了爲什麼之前的評論有一個壞票:)