我想从数据库中读取所有字符串。
基本上我的控制器中有一个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电子邮件地址中),但它没有工作或我得到例外。
有关如何获取电子邮件地址的建议,这些地址作为数组保存在数据库中吗?
感谢您的回答!
答案 0 :(得分:1)
您正在通过新建它来创建新的域实例,它永远不会为您提供db中持久存储的结果。要从db中的所有EmailSettings获取emailAddress
,您可以使用as:
EmailSetting.all*.emailAdress
或
EmailSetting.withCriteria {
projections {
property 'emailAddress'
}
}
或者也可以使用带有上述投影的DetachedCriteria。
<强>更新强>
第一种方法将是昂贵的,因为将获取所有行,然后将导出每行emailAddress
。我完全错过了为什么我使用Criteria的第二种方法。使用Projections,您只需获取所需的属性,而不是获取行本身。感谢格雷姆。