Grails 命名查询 - 按关联查找
Posted
技术标签:
【中文标题】Grails 命名查询 - 按关联查找【英文标题】:Grails named query - find by association 【发布时间】:2015-01-23 14:02:14 【问题描述】:我想创建一个命名查询,它将根据子类属性的一个(或多个属性)查找一个类的所有对象。
我希望能够找到 Foo.me == "some string" 的所有 Bars
所以,我有这个,但它不起作用:
class Foo
String me
class Bar
Foo foo
static namedQueries =
findByFooMe meStr ->
eq(foo.me, meStr)
请问正确的语法是什么样的?另外,如果 Bar hasMany Foos,它会如何变化,并且我想找到其 Foo,me 属性之一是“搜索字符串”的所有 Bars?
即
class Bar
static hasMany [foos: Foo]
【问题讨论】:
我会接受@Joshua 的回答,但您也可以使用eq('foo.me', meStr)
作为您现在所遇到问题的小修改。
@dmahapatro 谢谢,这也很有帮助。
【参考方案1】:
虽然我不建议使用 findBy
作为命名查询的前缀,但您已经接近正确的实现了。这是一个更新版本,也为查询使用了新名称。
static namedQueries =
locateByFooMe meStr ->
foo
eq('me', meStr)
如果您将您的关系更改为一个集合(一对多),只需确保属性名称 foo
(在这种情况下)更改为您将其更改为的任何内容(您的问题中为foos
),上述查询将仍在继续工作。
【讨论】:
以上是关于Grails 命名查询 - 按关联查找的主要内容,如果未能解决你的问题,请参考以下文章