Grails找到域然后保存它
问题描述:
我想要做的是找到一个域,然后创建一个新域或保存预先存在的域。下面是我目前使用的代码(在这个项目中,骨架是包名):Grails找到域然后保存它
def save() {
Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name)
def instance = lob.get(params.lob.id)
if (instance){
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}else{
instance = new lob()
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}
}
这似乎并不奏效。任何人都可以帮我解决这个问题吗?
答
通过getDomainClass
返回的对象是GrailsDomainClass
一个实例。要获得您可以拨打get
的实际域名,请先拨打getClazz
。例如:
Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name).clazz
此外,你就必须调用类对象上newInstance
而不是使用new
关键字来创建一个新的实例。
ataylor低于为什么你的代码失败的原因,但你也应该看看'findOrCreateBy'格姆方法,这将让你干你的代码了不少。它要么返回一个现有的对象,要么实例化一个新的未保存的对象,你可以在其中填入值。 – 2012-07-11 22:43:47