我有两个结构与下面的类Foo相同的域对象
class Foo {
static mapping = {
id column: "old_id_column"
prop1 column: "old_prop_1"
... some more properties ...
}
}
class Bar {
... looks the same as Foo ...
}
在类的 Controller 中,我尝试完成相同的操作,创建一个新对象并将其保存到数据库中。
当我这样做时
class FooController {
def methodName() {
final Foo foo = new Foo()
foo.prop1 = "val1"
foo.prop2 = val2
etc.
foo.save(flush: true)
}
}
一切正常,但是当我尝试在BarController中执行相同操作时,出现以下异常
无法将值NULL插入表'System.db.Bar'的'old_id_column'列中;列不允许为空。
我正在尝试对旧数据库进行建模,因此很明显我在基础数据库的配置中缺少某些内容,但找不到任何内容。关于可能引发此异常的事情的任何想法?
最佳答案
您需要指定一个生成器
即
id generator:'assigned', column: 'old_id_column', type: 'string'
请参阅文档@ http://grails.org/doc/latest/ref/Database%20Mapping/id.html