0

以下のクラスFooと同じ構造を持つ2つのドメインオブジェクトがあります

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'、テーブル 'System.db.Bar' に挿入できません。列はヌルを許可しません。

私はレガシーデータベースをモデル化しようとしているので、基礎となるDBの構成に何かが欠けていることは明らかですが、何も見つかりません. この例外を発生させる可能性のあるものについてのアイデアはありますか?

4

1 に答える 1

3

ジェネレーターを指定する必要があります

すなわち

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 に答える