Это старое решение больше не работает. См. ответ mattlary ниже
, Вам, вероятно, придется записать пользовательское средство поиска в HQL или использовать Разработчика Критериев.
MyDomain.find("from Domain as d order by last,first desc")
Или
def c = MyDomain.createCriteria()
def results = c.list {
order("last,first", "desc")
}
Я думаю, критерии являются лучшим выбором, но Вы сделали правильную вещь путем попытки средства поиска сначала. При получении объектов области от GORM правильный порядок для предпринятия попытки: динамическое средство поиска, критерии, HQL.
Hates_ criteria answer didn't seem to work for me; putting "last,first"
in order will only cause exceptions saying, "Property 'last,first' not found"
. To order on two fields, you can do the following:
def c = MyDomain.createCriteria()
def results = c.list {
and{
order('last','desc')
order('first','desc')
}
}
This query is working on the basis of first field. When the first field is blank then it is shorted by the second field.
order('last','desc')
order('first','desc')
При сортировке списков на содержании их объектов необходимо было бы реализовать компаратор, который имел бы некоторый ум для включения Вам, решают порядок сортировки на основе нескольких свойств.
Некоторые примеры компараторов стиля Groovy показывают здесь
Однако, если бы список, который Вы сортируете, возвращается из запроса базы данных, Вы были бы более обеспеченной сортировкой его с помощью CrteriaQuery и видов на этом