Grails 域:如何访问父域数据?
Grails Domain: How to access parent domain data?
我有一个父子域结构,我想为验证器访问子域中的父域数据。例如,在下面的代码示例中,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
但发现 parent 为空。
编辑:
更改:
static belongsTo = [parent:Parent]
验证器中也添加了:
if(obj.parent){
return true
}
return false
它仍然返回 false。
替换
static belongsTo = [Parent]
和
static belongsTo = [parent: Parent]
所以 child 知道它的 parent
要基于@bassmartin 的回答,请检查 documentation 以获取自定义验证器。你的验证器应该声明(至少)两个参数,第二个是对象实例:
validator: { val, obj ->
//obj.parent is what you're looking for
}
我有一个父子域结构,我想为验证器访问子域中的父域数据。例如,在下面的代码示例中,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
但发现 parent 为空。
编辑:
更改:
static belongsTo = [parent:Parent]
验证器中也添加了:
if(obj.parent){
return true
}
return false
它仍然返回 false。
替换
static belongsTo = [Parent]
和
static belongsTo = [parent: Parent]
所以 child 知道它的 parent
要基于@bassmartin 的回答,请检查 documentation 以获取自定义验证器。你的验证器应该声明(至少)两个参数,第二个是对象实例:
validator: { val, obj ->
//obj.parent is what you're looking for
}