我有 2 个域类:Category 和 CatAttribute,它们具有多对一的关系,Category 有 2 个 CatAttribute 列表。
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)
这里的领域类是简化的/数据是为了说明目的而模拟的,实际的生产代码要复杂得多,但两个领域之间的关系是相同的。
.addToSpec 行发生验证错误:
Field error in object 'Category' on field 'specs[0].category': rejected value [null];
这个错误与我将 2 个CatAttribute
对象列表放在同一个域中有关Category
,如果我删除其中任何一个并继续创建对象,一切都很好,我映射域类Category
的方式都是基于grails ref
,所以我不认为映射有什么问题,但如果有,请告诉我。