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

09-10 08:07
查看更多