给定一个namedQuery:
class MyDomainObject {
String someProperty
static namedQueries = {
myNamedQuery {
// some implementation here
}
}
}
我可以使用它来生成一个列表,按单个键排序,如下所示(documentation for 2.4.3 here):
def resultsList = MyDomainObject.myNamedQuery.list(sort: "someProperty", order: "desc")
如何按多列对结果进行排序?我希望能够动态地定义排序参数,而不是在查询中定义它们。
发布于 2015-04-15 19:29:07
我确信有更好的方法,但我最终创建了另一个命名查询,我可以将其连接到我选择的查询上(我也可以总是合并到原始查询中)。
// expects to be passed a List containing a series of Maps
orderByMultipleColumns { List columnsToSortBy ->
columnsToSortBy.each { Map field ->
order("${field.fieldName}", field.fieldOrder)
}
}
// usage:
List orderByList = []
// ...
// within some loop that I use:
orderByList << [fieldName: someValue, fieldOrder: dir] // dir == 'asc' or 'desc'
// ...
MyDomainObject.myNamedQuery().orderByMultipleColumns(orderList).listDistinct(max: length, offset: start)
https://stackoverflow.com/questions/29646539
复制