4

我的项目中有这样一个域类:

class Log  {

Integer entityId
Integer tableId
Date logDt
}

我想按某个tableId选择所有记录,并按entityIdlogDt desc对它们进行排序。按一个字段排序工作正常:

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

但是当我尝试按两个字段排序时:

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

我收到一个错误,表明此表中没有此类字段'entityId,logDt'

这样做的正确语法是什么?

谢谢。

4

2 回答 2

11

使用动态查找器,您只需按一个属性排序。

如果您想按多个属性排序,可以使用条件或 HQL 查询。

以下是使用条件的示例:

def logs = Log.createCriteria().list {
    eq('tableId', tableID)
    order('entityId', 'desc')
    order('logDt', 'desc')
}
于 2013-05-02T07:34:51.683 回答
3

试试这个,

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

它适用于 Grails 3.1.9 及更高版本。

注意:可能也适用于一些以前的版本,但从未尝试过。

于 2016-11-02T10:20:33.127 回答