addTo无法添加

时间:2013-10-11 20:38:25

标签: grails gorm

我有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];

这个错误与我在同一个域CatAttribute中放置2个Category个对象列表有关,如果我删除其中任何一个并继续我的对象创建,一切都很好,顺便说一下我映射的域类Category全部基于grails ref ,所以我不认为映射有任何问题,但如果有,请告诉我。

1 个答案:

答案 0 :(得分:0)

您真的需要关联List(您是否编制索引),默认情况下它们是Set
修改类别如下,你应该是好的:

class Category {
    String name
    String description

    static hasMany = [params: CatAttribute, specs: CatAttribute]
    static mappedBy = [params: "category", specs: "category"]

    static constraints = {
        description nullable: true
        name unique: true
        params nullable: true //optional
    }
}

如果你需要1:m的关系。