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