grails - 保存第二版本的grails对象

标签 grails gorm

我想做的一件事是版本化数据库中的条目。在我的更新方法中,我想保存一个对象的新版本。例如

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

尽管这会保存当前的文件,但不会创建新的文件。我究竟做错了什么?

最佳答案

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

关于grails - 保存第二版本的grails对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144718/

相关文章:

grails - 在Grails中编写集成测试以测试数据库持久性

grails - 在groovy中显示名称而不是id

class - 如何修复 Grails 错误 : "No domain class found for name PrivacyOptions. Please try again and enter a valid domain class name"

oracle - 从多个列表填充Grails GSP表

grails - Grails 3域类名为 “Application”的问题

grails - Grails:插件:Drools vs Drools-Gorm

grails - 仅在Grails应用程序GORM中具有外键,而在数据库中则没有

email - grails 发送电子邮件 : mailService is null always

hibernate - 如何创建名称为 'user'的表

grails - Grails对象不是声明类的实例