2013-05-02 45 views
3

我有這樣一個域類在我的項目:的Grails - 排序查詢中的兩個字段

class Log { 

Integer entityId 
Integer tableId 
Date logDt 
} 

我想通過一定的TABLEID通過ENTITYID 選擇所有記錄,並將其分類logDt desc。 排序由一個申請工作正常:

Log.findAllByTableId(tableID, [sort: 'entityId', order: 'desc']) 

但是當我試圖通過這兩個字段進行排序:

Log.findAllByTableId(tableID, [sort: 'entityId,logDt', order: 'desc'])

我得到一個錯誤,沒有在這個表中沒有這樣的字段'entityId,logDt'

這樣做的正確語法是什麼?

謝謝。

+0

可能重複[如何在Grails中的多個字段中排序?](http://stackoverflow.com/questions/326053/how-to-order-by-more-than-one-field-in- grails) – 2014-06-02 00:22:45

回答

10

使用動態查找器,您可以按一個屬性進行排序。

如果您想按多個屬性進行排序,您可以使用條件或HQL查詢。

下面是一個使用標準的例子:

def logs = Log.createCriteria().list { 
    eq('tableId', tableID) 
    order('entityId', 'desc') 
    order('logDt', 'desc') 
} 
+0

我從問題中得到了答案,因爲我有一個參數 – 2014-10-26 10:18:05

2

試試這個,

Log.findAllByTableId(tableID, [sort: ['entityId': 'desc', 'logDt': 'desc']]) 

它的工作原理,使用Grails 3.1.9起。

注:也許,以前的一些版本,也從未嘗試過。