2014-05-17 3 views
0

извините за этот простой вопрос. Однако я смущен.Читать строки из объекта

Я хочу прочитать все строки из базы данных.

В основном у меня есть объект EmailSettings emailAddresses = new EmailSettings() в контроллере и вы хотите прочитать все электронные письма, сохраненные в emailSettings Domain object. Класс выглядит следующим образом:

class EmailSettings { 

    String emailAddress 

    static constraints = { 

     emailAddress(blank: false, nullable: false, email: true) 

    } 
} 

Моя проблема, я не получаю сохраненные адреса электронной почты из emailAddresses объекта. Я пробовал его с list(), getEmailAddress (например, emailAddresses.getEmailAddress().toString(), что равно null, хотя в db адресах электронной почты, сохраненных под этим объектом домена), но это не работает или я получаю исключение.

Любое предложение о том, как получить адреса электронной почты, которые сохраняются в db как массив?

Я ценю ваш ответ!

+1

См. Комментарий Грэма и мое обновление. – dmahapatro

ответ

1

Вы создаете новый экземпляр домена, обновляя его, что никогда не даст вам результатов, которые сохраняются в db. Чтобы получить emailAddress от всех EmailSettings в дБ, вы можете использовать как:

EmailSetting.all*.emailAdress 

или

EmailSetting.withCriteria { 
    projections { 
     property 'emailAddress' 
    } 
} 

или же можно использовать DetachedCriteria с выше проекции.

ОБНОВЛЕНИЕ
Первый подход будет дорогим, потому что все строки будут извлекаться, а затем emailAddress из каждой строки будут выведены. Я полностью пропустил упоминание, почему у меня был второй подход с использованием критериев. Используя Projections, вы получите только те свойства, которые вам нужны, а не выбор самой строки. Благодаря Грэму.

+1

Ваши 2 примера очень разные. Первый будет запрашивать все объекты в базе данных, загружая каждую строку таблицы в память, а затем извлекать значение свойства из каждого объекта. Другими словами, это очень дорогостоящая операция. Вам лучше со вторым примером, или с помощью DetachedCriteria, как указано –

+1

@GraemeRocher Точно. Вот почему у меня был второй пример. Я пропустил упоминать обоснование использования критериев в выходные, но я бы определенно добавил, что это обновление, спасибо. – dmahapatro