0

我有两个与下面的类 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 ...
}

在类的控制器中,我尝试完成同样的事情,创建一个新对象并将其保存到数据库中。

当我这样做时

class FooController {

    def methodName() {
        final Foo foo = new Foo()
        foo.prop1 = "val1"
        foo.prop2 = val2
        etc.

        foo.save(flush: true)
    }
} 

一切正常,但是当我尝试在 BarController 中执行相同操作时,出现以下异常

无法将值 NULL 插入列“old_id_column”、表“System.db.Bar”;列不允许空值。

我正在尝试对遗留数据库进行建模,所以很明显我在底层数据库的配置中遗漏了一些东西,但我找不到任何东西。关于可能引发此异常的事情的任何想法?

4

1 回答 1

3

您需要指定一个生成器

IE

id generator:'assigned', column: 'old_id_column', type: 'string'

请参阅文档@http: //grails.org/doc/latest/ref/Database%20Mapping/id.html

于 2013-01-08T16:02:55.167 回答