我想要做的是找到一個域,然後創建一個新域或保存預先存在的域。下面是我目前使用的代碼(在這個項目中,骨架是包名):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
}
}
}
}
這似乎並不奏效。任何人都可以幫我解決這個問題嗎?
ataylor低於爲什麼你的代碼失敗的原因,但你也應該看看'findOrCreateBy'格姆方法,這將讓你幹你的代碼了不少。它要麼返回一個現有的對象,要麼實例化一個新的未保存的對象,你可以在其中填入值。 – 2012-07-11 22:43:47