繁体   English   中英

是否可以为grails域对象保存特定的ID?

[英]Is it possible to save a specific id for a grails domain object?

我正在尝试将一个域对象的属性复制到另一个类似的域对象(基本上将已退役的数据从存档集合移动到活动的对象)。 但是,当我尝试使用手动输入的id保存时,保存实际上不会将任何内容放入集合中。

def item = new Item(style: "631459")
item.id = new ObjectId("537da62d770359c2fb4668e2")
item.save(flush: true, validate: false, failOnError:true)

failOnError不会抛出异常,看起来保存工作正常。 此外,如果我在item.save上打印它将返回正确的ID。 我认为您可以在域对象上放置特定的ID是错误的吗?

您可以将id生成器设置为“已分配”,这样您就可以将所需的值和将要保存的值一起保存。

class Item {

...

    static mapping = {
        id generator:'assigned'
    }
}

标识符id是一个有点敏感的名称。 如果你检查你的dbconsole,你会发现即使没有询问,GORM也为你提供了一个。 当您自己使用该名称时,会发生混淆。 Grails会用println的东西来尊重你,但是GORM对id如何被初始化和存储有了最后的说法,那么它就不会听你的了。

您可以将id重命名为其他内容,就像您在本文中看到的那样,也许您可​​以自己使用名称ID 否则,我建议将ID留给GORM,并为您的旧密钥设置自己的标识符。 无论如何,您都不会有检索数据的问题,也不会出现性能问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM