我想创建一个命名查询,它将根据子类属性的属性(或多个属性)查找一个类的所有对象。
我希望能找到Foo.me ==“some string”
的所有酒吧所以,我有这个,它不起作用:
class Foo {
String me
}
class Bar {
Foo foo
static namedQueries = {
findByFooMe { meStr ->
eq(foo.me, meStr)
}
}
}
正确的语法是什么样的?另外,如果Bar有很多Foos,它会如何改变,我想找到其中一个Foo,我的属性是“搜索字符串”的所有Bars?
即
class Bar {
static hasMany [foos: Foo]
}
答案 0 :(得分:1)
虽然我不建议使用findBy
作为命名查询的前缀,但您已接近拥有正确的实现。这是一个更新版本,也有一个新的查询名称。
static namedQueries = {
locateByFooMe { meStr ->
foo {
eq('me', meStr)
}
}
}
如果您将关系更改为集合(一对多),请确保属性名称foo
(在本例中)更改为您将其更改为(问题中为foos
)的任何内容上述查询仍将继续有效。