Grails的 - 排序查询中的两个字段(Grails - Sort by two fields i

2019-09-01 17:39发布

我在我的项目这样的域类:

class Log  {

Integer entityId
Integer tableId
Date logDt
}

我想通过一定的TABLEID选择所有记录,并通过ENTITYID logDt降序排序。 通过一个申请排序工作正常:

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

但是当我试图通过这两个字段进行排序:

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

我得到一个错误,有没有这样的字段'entityId,logDt'在此表。

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

谢谢。

Answer 1:

使用动态查找,您只需通过一个属性进行排序。

如果您想通过多个属性进行排序,你可以使用标准或HQL查询。

下面是一个使用标准的例子:

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


Answer 2:

试试这个,

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

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

注:可能,可与以前的一些版本中也从未想过尝试。



文章来源: Grails - Sort by two fields in a query
标签: grails gorm