我对Grails HQL文档有点困惑。假设我有一个包含3个字段的域类,
class Example {
String a
String b
String c
}
我想做一个Example.findByAAndBAndC()的等价物,你能告诉我我用来设置它并传递3个参数的代码行吗?请注意文档说,最多可以为findBy使用两个字段。我需要做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
文档很好,有几个例子。