给出一个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")
如何按多列订购结果?我希望能够动态定义排序参数,而不是在查询中定义它们。
答案 0 :(得分:0)
我确定有更好的方法,但我最终创建了另一个可以连接到我选择的查询的命名查询(我也可以将其整合到原始查询中)。
// 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)