Grails按属性搜索拥有的对象

Grails按属性搜索拥有的对象,grails,Grails,我试图为一个查询找到合适的语法,我知道这个查询非常常见,但找不到一个代码示例 class ObjA { ... static hasMany = [b:ObjB] } 如果a是ObjA的一个实例,我想执行如下查询: a.b.findAllBsSuchThat(b.someproperty = somevalue) 为了避免根据a对惰性关联进行(N+1)查询,您可以使用以下条件: ObjA.withCriteria { b { eq 'someProperty', so

我试图为一个查询找到合适的语法,我知道这个查询非常常见,但找不到一个代码示例

class ObjA {
...
static hasMany = [b:ObjB]
}
如果a是ObjA的一个实例,我想执行如下查询:

a.b.findAllBsSuchThat(b.someproperty = somevalue)
为了避免根据
a
对惰性关联进行(N+1)查询,您可以使用以下条件:

ObjA.withCriteria {
    b {
        eq 'someProperty', someValue
    }
}
其中
查询:

ObjA.where { b.someProperty == somevalue }.list()

如果您使用类似于
a.b.findAllBsSuchThat(b.someproperty=somevalue)
的东西,那么您将获得
a
的所有
b
,然后对结果进行过滤。这将影响性能,而且是不必要的。

如果测试的属性是
字符串,语法是否会略有不同。这是我试图执行的真正测试
if(entRec.where{flags.color.equalsIgnoreCase('red').list()}!=[])
我想知道
entRec
是否有
标志
属性颜色
红色
if(entRec.where{flags.color='red'}.count())应该做的
=
运算符在Groovy中被重写,如果不匹配,
count()
将导致0,并且最终Groovy Truth将在
条件下失败。谢谢,但请确认,这不是不区分大小写的正确吗?正确。这是区分大小写的。知道了。再次感谢。