2011-04-01 3 views
1

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

Я не люблю использовать это:

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

Becayse это вызывает ресурсы памяти так много. Большое вам спасибо!

ответ

9

Быстрый способ заключается в использовании параметра Макс с list

Domain.list([max:1]) 

Или вы могли бы использовать критерии запроса я считаю:

def domainCriteria = Domain.createCriteria() 
def firstDomain = domainCriteria.list{ 
    maxResults(1) 
    order('id', 'asc') 
}[0] 
+0

возможно попробовать .get {maxResults (1) ...}, без [0]? – koddo

+0

Разве это не привело бы к вам список, содержащий один элемент, а не отдельный элемент? –

+0

возвращает элемент, а не список – koddo

1

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

User.find("from User") 

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

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

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

Смежные вопросы