2013-02-28 38 views
0

我想要做的一件事是版本在我們的數據庫中的條目。在我的更新方法中,我想保存一個更新的第二個版本的對象。例如保存Grails對象的第二個版本

def update = { 
    def VariantInstance = Variant.get(params.id) 
    def NewVariantInstance = VariantInstance 
    NewVariantInstance.properties = params 
    if (VariantInstance) { 
     if (!VariantInstance.hasErrors()) { 
      VariantInstance.save() 
      NewVariantInstance.save() 

      flash.message = "${message(code: 'default.updated.message', args: [message(code: 'Variant.uniqueIdentifyingName', default: 'Variant'), VariantInstance.id])}" 
      redirect(action: "list") 
     } 
     else { 
      render(view: "edit", model: [VariantInstance: VariantInstance]) 
     } 
    } 
    else { 
     flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'Variant.uniqueIdentifyingName', default: 'Variant'), params.id])}" 
     redirect(action: "list") 
    } 
} 

雖然這節省了當前的一個,但它不會創建一個新的。我究竟做錯了什麼?

回答

1

有兩個問題; NewVariantInstance將僅僅是對VariantInstance的引用,因此它將取消引用同一個對象。此外,當你完成你的參數賦值時,你也將VariantInstance中的id字段賦值給NewVariantInstance,所以GORM會在保存時看到對象。

相關問題