Grails Domain:如何访问父域数据?

时间:2017-08-22 13:14:18

标签: validation grails groovy gorm domain-object

我有一个父子域结构,我希望在子域中访问父域数据验证器。例如,在下面的代码示例中,child1有一个变量' name'为了验证目的,我需要child2数据。

我怎样才能实现这种情况?

我有这样的域名结构:

class Parent{
    Child child1
    Child child2

    static mapping = {
        child1 lazy:false
        child2 lazy:false
    }
}

class Child{
    String name
    // some other variables

    static belongsTo = [parent:Parent]

    static constraints = {
        name(nullable:true,validator:{val, obj ->
            if(obj.parent){
                return true
            }
            return false
        })
    }
}

我试过了 this.parent.child2 但父母被发现为空。

编辑:
更改:
static belongsTo = [parent:Parent]

还在验证器中添加:
if(obj.parent){ return true } return false

仍然是假的。

2 个答案:

答案 0 :(得分:1)

替换

static belongsTo = [Parent]

static belongsTo = [parent: Parent]

让孩子知道其父母

答案 1 :(得分:0)

要建立@ bassmartin的答案,请检查documentation以获取自定义验证器。您的验证器应该声明(至少)两个参数,第二个参数是对象实例:

validator: { val, obj ->
  //obj.parent is what you're looking for
}