从对象中读取字符串

时间:2014-05-17 19:47:50

标签: grails grails-2.0 grails-domain-class

抱歉这个简单的问题。但是,我很困惑。

我想从数据库中读取所有字符串。

基本上我的控制器中有一个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 ARE电子邮件地址中),但它没有工作或我得到例外。

有关如何获取电子邮件地址的建议,这些地址作为数组保存在数据库中吗?

感谢您的回答!

1 个答案:

答案 0 :(得分:1)

您正在通过新建它来创建新的域实例,它永远不会为您提供db中持久存储的结果。要从db中的所有EmailSettings获取emailAddress,您可以使用as:

EmailSetting.all*.emailAdress

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

或者也可以使用带有上述投影的DetachedCriteria。

<强>更新
第一种方法将是昂贵的,因为将获取所有行,然后将导出每行emailAddress。我完全错过了为什么我使用Criteria的第二种方法。使用Projections,您只需获取所需的属性,而不是获取行本身。感谢格雷姆。