grails条件查询返回空结果

时间:2014-12-30 10:06:21

标签: oracle hibernate grails gorm

我有一个域结构,如下所示

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)
                }
            }
        }
    }
}

但它返回一个空列表,尽管有有效数据。

1 个答案:

答案 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项目,以便说明这个答案。