Grails / GORM没有级联保存整个对象层次结构

时间:2013-01-22 15:28:18

标签: grails gorm cascade

我无法在我的对象层次结构中级联保存。下面是我的对象层次结构的代码。

class Entity {
    static hasMany = [attributes: Attribute]
}

class Attribute extends ValuePossessor {
    static belongsTo = Entity
}

abstract class ValuePossessor {
    def valueService
    Value value
    void setValue(val) {
        this.value = valueService.Create(val)
        this.value.possessor = this
    }
}

abstract class Value {
    static belongsTo = [possessor: ValuePossessor]
}

class StringValue extends Value {
    String value
}

valueService只是一个带有大switch语句的服务,它创建了正确的值类型(string,boolean,int等)。

Entity e = new Entity()
Attribute attr = new Attribute()
attr.setValue(1)
e.addToAttributes(attr)
e.save()

上面的代码正确创建了所有对象,但无法保存值对象。保存实体和属性,但值不保存。我是否遗漏了一直需要级联到值对象的标识符?

1 个答案:

答案 0 :(得分:2)

想出来了。显然,grails动态setter中有一些魔力。我将setValue(val)方法更改为set(val)并开始工作。获得的经验:不要覆盖grails的动态添加方法,因为它们是用魔法,尘埃和独角兽尿液构建的。