我的项目中有这样的域类:
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 :(得分:10)
使用动态查找器,您只需按一个属性排序即可。
如果您想按多个属性排序,可以使用条件或HQL查询。
以下是使用条件的示例:
def logs = Log.createCriteria().list {
eq('tableId', tableID)
order('entityId', 'desc')
order('logDt', 'desc')
}
答案 1 :(得分:2)
试试这个,
Log.findAllByTableId(tableID, [sort: ['entityId': 'desc', 'logDt': 'desc']])
它适用于Grails 3.1.9以后。
注意:可能也适用于以前的某些版本,但从未尝试过。