0

私がやりたいことの1つは、データベースのエントリをバージョン管理することです。私のupdateメソッドでは、オブジェクトの新しい2番目のバージョンを保存したいと思います。例えば

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")
    }
}

これにより現在のものが保存されますが、新しいものは作成されません。私は何が間違っているのですか?

4

1 に答える 1

1

2 つの問題があります。NewVariantInstance は、おそらく VariantInstance への参照になるだけなので、同じオブジェクトを逆参照しています。さらに、params の割り当てを行うと、id フィールドも VariantInstance から NewVariantInstance に割り当てられるため、GORM は保存時にオブジェクトを同じものとして認識します。

于 2013-02-28T20:14:51.413 に答える