尝试在Grails中保存DomainObject时,Id设置为NULL

时间:2013-01-08 15:21:51

标签: grails gorm grails-2.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 ...
}

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

当我这样做时

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',table' System.db.Bar&#39 ;;列不允许空值。

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

1 个答案:

答案 0 :(得分:3)

您需要指定生成器

即。

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

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