Grails 命名查询 - 通过关联查找
Grails named query - find by association
我想创建一个命名查询,它会根据子 class 属性的 属性(或属性)查找一个 class 的所有对象。
我希望能够找到 Foo.me == "some string"
的所有条形图
所以,我有这个,但它不起作用:
class Foo {
String me
}
class Bar {
Foo foo
static namedQueries = {
findByFooMe { meStr ->
eq(foo.me, meStr)
}
}
}
请问正确的语法是什么样的?此外,如果 Bar 有许多 Foos,它会如何变化,我想找到其 Foo,me 属性之一为 "search string" 的所有 Bars?
即
class Bar {
static hasMany [foos: Foo]
}
虽然我不建议使用 findBy
作为命名查询的前缀,但您已接近正确的实现。这是一个更新版本,也为查询命名。
static namedQueries = {
locateByFooMe { meStr ->
foo {
eq('me', meStr)
}
}
}
如果您更改与集合的关系(一对多),只需确保 属性 名称 foo
(在本例中)更改为您将其更改为的任何内容(foos
在你的问题中)并且上述查询仍将继续工作。
我想创建一个命名查询,它会根据子 class 属性的 属性(或属性)查找一个 class 的所有对象。
我希望能够找到 Foo.me == "some string"
的所有条形图所以,我有这个,但它不起作用:
class Foo {
String me
}
class Bar {
Foo foo
static namedQueries = {
findByFooMe { meStr ->
eq(foo.me, meStr)
}
}
}
请问正确的语法是什么样的?此外,如果 Bar 有许多 Foos,它会如何变化,我想找到其 Foo,me 属性之一为 "search string" 的所有 Bars?
即
class Bar {
static hasMany [foos: Foo]
}
虽然我不建议使用 findBy
作为命名查询的前缀,但您已接近正确的实现。这是一个更新版本,也为查询命名。
static namedQueries = {
locateByFooMe { meStr ->
foo {
eq('me', meStr)
}
}
}
如果您更改与集合的关系(一对多),只需确保 属性 名称 foo
(在本例中)更改为您将其更改为的任何内容(foos
在你的问题中)并且上述查询仍将继续工作。