Как заказать больше чем одним полем в Grails?

41
задан Adeel Ansari 2 November 2016 в 10:59
поделиться

5 ответов

Это старое решение больше не работает. См. ответ 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")
}
8
ответ дан doelleri 27 November 2019 в 00:14
поделиться

Я думаю, критерии являются лучшим выбором, но Вы сделали правильную вещь путем попытки средства поиска сначала. При получении объектов области от GORM правильный порядок для предпринятия попытки: динамическое средство поиска, критерии, HQL.

3
ответ дан Matthew Taylor 27 November 2019 в 00:14
поделиться

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')
    }
}
82
ответ дан 27 November 2019 в 00:14
поделиться

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')
4
ответ дан 27 November 2019 в 00:14
поделиться

При сортировке списков на содержании их объектов необходимо было бы реализовать компаратор, который имел бы некоторый ум для включения Вам, решают порядок сортировки на основе нескольких свойств.

Некоторые примеры компараторов стиля Groovy показывают здесь

Однако, если бы список, который Вы сортируете, возвращается из запроса базы данных, Вы были бы более обеспеченной сортировкой его с помощью CrteriaQuery и видов на этом

0
ответ дан j pimmel 27 November 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: