我正在使用带有 oracle 的 grails 2.4。现在,如果我想在数据库表中创建一行,我只需在 grails 中创建一个域对象并调用 save() 方法。不过,我目前没有将任何 id 传递给该对象。
new State("MN", "Minnesota").save();
这将创建一行并自动为数据库中的 id 列设置一个 id,因为我已经在域对象的映射器中指定了 id 列
mapping {
id column 'state_id'
}
根据Grails 文档,grails 默认使用本机(数据库内置)id 生成器。
我的问题是,如果我将数据库切换到 h2 而不是 oracle(对于不同的环境),grails 将如何管理数据库的 id 列?
目前,当我使用 Bootstrap.groovy 创建一些默认数据时,我收到一条错误消息,指出“STATE_ID”(对于 h2 数据库)中不允许出现“NULL”。它适用于甲骨文。
有没有办法告诉 grails 仅在数据库没有使用默认生成器时才使用某些特定的生成器?