grails find()使用3个字段/列(即具有多列的查找)

时间:2011-11-15 23:11:26

标签: grails

我对Grails HQL文档有点困惑。假设我有一个包含3个字段的域类,

class Example {
   String a 
   String b
   String c
 }

我想做一个Example.findByAAndBAndC()的等价物,你能告诉我我用来设置它并传递3个参数的代码行吗?请注意文档说,最多可以为findBy使用两个字段。我需要做3个领域。

由于

3 个答案:

答案 0 :(得分:10)

AFAIK如果您有超过2个谓词,则无法使用动态查找程序。改为使用条件查询:

def results = Example.withCriteria {
  eq('a', 'some-a')
  eq('b', 'some-b')
  eq('c', 'some-c')
}

更新

默认情况下,谓词是使用AND组合的,如果你想要OR而是使用:

def results = Example.withCriteria {
  or {
    eq('a', 'some-a')
    eq('b', 'some-b')
    eq('c', 'some-c')
  }
}

答案 1 :(得分:6)

我在我的项目中使用:

Example.findAllByAIlikeAndBIlikeAndCIlike("${a}%","${b}%","${c}%",[max:5, offset:0, sort:"a", order:"asc"])

它有效!

答案 2 :(得分:4)

有几种方法可以“找到”对象。

findWhere:

Example.findWhere(a:"Hello", B:"World")
Example.findByAandB("a value", "b value)

我建议你好好阅读一下:

http://grails.org/doc/latest/guide/
http://grails.org/doc/latest/guide/single.html#5.4.2%20Criteria

文档很好,有几个例子。