抱歉,这个简单的问题。但是,我很困惑。
我想从数据库中读取所有字符串。
基本上,我的 Controller 中有一个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电子邮件地址中)也无法正常工作,或者出现异常。关于如何获取电子邮件地址的任何建议,这些电子邮件地址以数组形式保存在数据库中?
感谢您的回答!
最佳答案
您正在通过对其进行更新来创建新的域实例,这将永远不会为您提供持久化在db中的结果。要从db中的所有EmailSettings获取emailAddress
,可以将其用作:
EmailSetting.all*.emailAdress
要么
EmailSetting.withCriteria {
projections {
property 'emailAddress'
}
}
或者也可以将DetachedCriteria与上述投影配合使用。
更新
第一种方法将很昂贵,因为将提取所有行,然后从每个行派生
emailAddress
。我完全错过了提及为什么我对标准使用第二种方法的想法。使用Projections,您只会获得所需的属性,而不是获取行本身。感谢Graeme。
关于grails - 从对象读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23715449/