Получить первый элемент в списке Grails - PullRequest
1 голос
/ 01 апреля 2011

Как получить первый элемент в списке объектов Grails, возвращаемый из команды .list (), но не использовать метод Java. Я имею в виду, что у нас есть возможность выбрать верхний элемент при вызове .list (), аналогично SQL-запросу SELECT TOP FROM.

Мне не нравится использовать это:

List domains = Domain.list()
return domains.get(0)

Потому что это так сильно расходует ресурсы памяти. Большое вам спасибо!

Ответы [ 3 ]

10 голосов
/ 01 апреля 2011

Быстрый способ - использовать параметр max с list

Domain.list([max:1])

Или вы можете использовать запрос Criteria, который я считаю:

def domainCriteria = Domain.createCriteria()
def firstDomain = domainCriteria.list{
    maxResults( 1 )
    order( 'id', 'asc' )
}[0]
2 голосов
/ 24 июля 2014

По состоянию на Grails 2.1.1 , first() и last() добавлены методы.

def firstResult = Domain.first()

и

def lastResult = Domain.last()
1 голос
/ 02 апреля 2011

Еще один способ сделать это с find, который возвращает первый результат, или ноль, если таблица пуста.

User.find("from User")

Если вы хотите более одного, вы также можете использовать findAll с параметром max

User.findAll("from User", [max: 10])

Если вы действительно хотите какой-либо объект из таблицы, тогда list, вероятно, является вашей лучшей ставкой, но в большинстве случаев с такими запросами вы хотите ограничить его немного больше и перейти на HQL. может сделать это очень легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...