0

我想做的一件事是对我们数据库中的条目进行版本控制。在我的更新方法中,我想保存一个对象的更新的第二个版本。例如

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

有两个问题;NewVariantInstance 很可能只是对 VariantInstance 的引用,因此它取消了对同一个对象的引用。此外,当您进行参数分配时,您还将 id 字段从 VariantInstance 分配给 NewVariantInstance,因此 GORM 在保存时会看到相同的对象。

于 2013-02-28T20:14:51.413 回答