0

Category と CatAttribute の 2 つのドメイン クラスがあります。これらには多対 1 の関係があり、Category には CatAttribute の 2 つのリストがあります。

class Category {

    static constraints = {
        description nullable: true
        name unique: true
    }


    static hasMany = [params:CatAttribute, specs:CatAttribute]
    static mappedBy = [params: "none", specs: "none"]
    static mapping = {
    }

    List<CatAttribute> params  //required attributes
    List<CatAttribute> specs   //optional attributes
    String name
    String description        


}

と私の CatAttribute クラス:

class CatAttribute {

    static constraints = {
    }
    static belongsTo = [category: Category]
    String name

}

新しいオブジェクトを作成しようとすると、保存に失敗します:

def someCategory = new Category(name: "A CATEGORY")
.addToSpecs(new CatAttribute(name: "SOMETHING"))
.addToParams(new CatAttribute(name: "onemore attribute"))
.save(flush: true, failOnError: true)

ここでのドメイン クラスは簡略化されています/データは説明目的でのみモック化されています。実際の製品コードはもっと複雑ですが、2 つのドメイン間の関係は同じです。

.addToSpec 行で検証エラーが発生します。

Field error in object 'Category' on field 'specs[0].category': rejected value [null];

CatAttributeこのエラーは、同じドメインにオブジェクトの 2 つのリストを配置したことに関係していますCategory。これらのいずれかを削除してオブジェクトの作成を続行すると、すべて問題なく、ドメイン クラスをマッピングする方法はすべてgrails refCategoryに基づいて いるため、マッピングに問題はないと思いますが、もしあれば教えてください。

4

1 に答える 1