Grails найти первым - PullRequest
       0

Grails найти первым

11 голосов
/ 07 июня 2010

Я знаю, что это простой вопрос, но он требует больше времени

Как найти первую запись из таблицы в граалях.

Мне нужно получить только первую запись без знания идентификатора.

Есть ли какой-нибудь метод, подобный find: first in grails?

Заранее спасибо.

Ответы [ 5 ]

14 голосов
/ 17 сентября 2012

Обновление до Grails 2.1.1 или новее добавляет два новых метода (первый и последний) для GORM для решения этой необходимой функции.

Из документов :

class Person {
    String firstName
    String lastName
    Integer age
}

// retrieve the first person ordered by the identifier
def p = Person.first()
// retrieve the first person ordered by the lastName property
p = Person.first(sort: 'lastName')

// retrieve the first person ordered by the lastName property
p = Person.first('lastName')
4 голосов
/ 07 июня 2010

Ну, вы должны определить, по какому показателю эта запись должна быть "первой".

Предполагая, что вы имеете в виду запись с самой ранней отметкой времени создания, самым простым и надежным подходом было бы добавить свойство dateCreated к вашему классу домена и затем запросить объект с наименьшей такой датой. Фактически вам даже не нужно устанавливать дату создания вручную, потому что Grails делает это за вас (если вы называете свойство dateCreated) - см. Автоматическая отметка времени в документации Grails.

HQL-запрос будет выглядеть примерно так:

def firstObject = YourClass.find("FROM YourClass ORDER BY dateCreated")
2 голосов
/ 29 марта 2011

Проверьте критерии и прогнозы гибернации, например:

def location = Location.createCriteria()
def firstRecord = location.list{
    maxResults(1)
    order("id","asc")//assuming auto increment just to make sure 
}[0]

http://grails.org/doc/1.0.3/ref/Domain%20Classes/createCriteria.html

1 голос
/ 07 июня 2010

Если отметка времени не имеет значения, вы можете попробовать, если ответ Даниэля без ORDER BY сработает, т.е.

def firstObject = YourClass.find("FROM YourClass")
0 голосов
/ 02 марта 2015

Вы можете использовать методы grails findBy для возврата первого результата запроса.

-> Из документов 1.3.7

findBy *

Назначение

Динамический метод, использующий свойства класса домена для создания выражений метода запроса Grails, которые возвращают первый результат запроса

-> из последних документов

findBy * Назначение

Динамический метод, который использует свойства класса домена для выполнения запроса, возвращающего первый соответствующий результат.

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