加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Bootstrap.groovy中设置Grails域ID

发布时间:2020-12-17 21:21:31 所属栏目:安全 来源:网络整理
导读:是否可以在Grails的Bootstrap.groovy中显式设置域对象的id(或者在任何地方,就此而言)? 我尝试过以下方法: new Foo(id: 1234,name: "My Foo").save() 和: def foo = new Foo()foo.id = 1234foo.name = "My Foo"foo.save() 但在这两种情况下,当我在运行时打
是否可以在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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读