我有一个域结构,如下所示
class Parent {
static hasMany = [childs:Child]
}
class Child {
int gender
string height
}
现在,我想得到所有父母的名单,他们有一个男孩(性别= 1),身高<180>厘米 一个女孩(性别= 2)超过'高150英尺。
我尝试了下面给出的标准
def criteria = Parent.createCriteria()
def parents = criteria.list() {
childs {
and {
and {
eq("gender", 2)
ge("height", 150)
}
and {
eq("gender", 1)
le("height", 180)
}
}
}
}
}
但它返回一个空列表,尽管有有效数据。
答案 0 :(得分:1)
将'childs'后的'and'
更改为'or'
。因为,逻辑'or'
尝试在两个查询之间找到始终为null的 union 。
List<Parent> parents = Parent.createCriteria().listDistinct {
and {
childs {
or {
and {
eq("gender", 2)
ge("height", 150)
}
and {
eq("gender", 1)
le("height", 180)
}
}
}
}
}
你可以看看我做过的github项目,以便说明这个答案。