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 在你的问题中)并且上述查询仍将继续工作。