是否可以在Grails的Bootstrap.groovy中显式设置域对象的id(或者在任何地方,就此而言)? 我尝试过以下方法: new Foo(id: 1234, name: "My Foo").save() 和: def foo = new Foo()foo.id = 1234foo.name = "My Foo"foo.
我尝试过以下方法:
new Foo(id: 1234, name: "My Foo").save()
和:
def foo = new Foo() foo.id = 1234 foo.name = "My Foo" foo.save()
但在这两种情况下,当我在运行时打印出Foo.list()的结果时,我看到我的对象的id为1,或者序列中的下一个id是什么.
编辑:
这是在Grails 1.0.3中,当我使用内置的HSQL数据库在’dev’中运行我的应用程序时.
编辑:
chanwit提供了one good solution below.但是,我实际上正在寻找一种方法来设置id而不改变我的域的id生成方法.这主要用于测试:我希望能够在我的测试引导程序或setUp()中将某些内容设置为已知的id值,但仍然能够在生产中使用auto_increment或序列.
class Foo { String name static mapping = { id generator:'assigned' } }
并且你的第二个片段(不是第一个片段)将完成这项工作(在通过构造函数传递时不会分配Id).