当前位置 : 主页 > 网页制作 > Bootstarp >

在Bootstrap.groovy中设置Grails域ID

来源:互联网 收集:自由互联 发布时间:2021-06-12
是否可以在Grails的Bootstrap.groovy中显式设置域对象的id(或者在任何地方,就此而言)? 我尝试过以下方法: new Foo(id: 1234, name: "My Foo").save() 和: def foo = new Foo()foo.id = 1234foo.name = "My Foo"foo.
是否可以在Grails的Bootstrap.groovy中显式设置域对象的id(或者在任何地方,就此而言)?

我尝试过以下方法:

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或序列.

是的,手动GORM映射:

class Foo {
  String name
  static mapping = {
    id generator:'assigned'
  }
}

并且你的第二个片段(不是第一个片段)将完成这项工作(在通过构造函数传递时不会分配Id).

网友评论