![](/img/trans.png)
[英]Is it possible to configure Grails to never change a domain object unless .save() is called?
[英]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.