Grails命名查询 - 通过关联查找

时间:2015-01-23 14:02:14

标签: grails associations named-query

我想创建一个命名查询,它将根据子类属性的属性(或多个属性)查找一个类的所有对象。

我希望能找到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]
} 

1 个答案:

答案 0 :(得分:1)

虽然我不建议使用findBy作为命名查询的前缀,但您已接近拥有正确的实现。这是一个更新版本,也有一个新的查询名称。

static namedQueries = {
    locateByFooMe { meStr ->
        foo {
          eq('me', meStr)
        }
    }
}

如果您将关系更改为集合(一对多),请确保属性名称foo(在本例中)更改为您将其更改为(问题中为foos)的任何内容上述查询仍将继续有效。