代码之家  ›  专栏  ›  技术社区  ›  John

Grails命名查询-按关联查找

  •  0
  • John  · 技术社区  · 11 年前

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

    我希望能够找到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]
    } 
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Joshua Moore    11 年前

    虽然我不建议使用 findBy 作为命名查询的前缀,您接近于获得正确的实现。这是一个更新的版本,其中也包含了查询的新名称。

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

    如果更改与集合的关系(一对多),请确保属性名称 foo (在这种情况下)更改为您所更改的任何内容( foos 在您的问题中),并且上述查询仍将继续工作。

    推荐文章