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
に基づいて
いるため、マッピングに問題はないと思いますが、もしあれば教えてください。