我想创建一个命名查询,根据子类属性的一个或多个属性来查找一个类的所有对象。
我希望能够找到Foo.me==“一些字符串”
所以,我有这个,但它不起作用:
class Foo { String me } class Bar { Foo foo static namedQueries = { findByFooMe { meStr -> eq(foo.me, meStr) } } }
请问正确的语法是什么样子的?此外,如果Bar有很多Foo,并且我想查找所有的Bar,其中一个Foo,me属性是“搜索字符串”,它会发生什么变化?
即
class Bar { static hasMany [foos: Foo] }
虽然我不建议使用 findBy 作为命名查询的前缀,您接近于获得正确的实现。这是一个更新的版本,其中也包含了查询的新名称。
findBy
static namedQueries = { locateByFooMe { meStr -> foo { eq('me', meStr) } } }
如果更改与集合的关系(一对多),请确保属性名称 foo (在这种情况下)更改为您所更改的任何内容( foos 在您的问题中),并且上述查询仍将继续工作。
foo
foos