Grails GORM查询具有父对象';s属性

Grails GORM查询具有父对象';s属性,grails,gorm,parent-child,subset,Grails,Gorm,Parent Child,Subset,仅供参考,请随意建议一个更好的标题。我有以下域模型(我们无法控制): 我的问题是:我有一个Foo列表,我需要找到Foo.someDate==Bar.someDate的所有条,但是只在一个查询中,而不是每个Foo的一个查询中,不涉及延迟加载。此外,将条形图设置为“即时抓取”也不是一个选项 例如,如果这是我的数据(伪代码,为了简单起见,我将id和baz组合成简单的“id”): 我需要在一次查询中返回id为2和4的条。我真的不知道该怎么做 如果有必要,它可以是HQL,但最好是GORM查询。不确定这是否

仅供参考,请随意建议一个更好的标题。我有以下域模型(我们无法控制):

我的问题是:我有一个Foo列表,我需要找到Foo.someDate==Bar.someDate的所有条,但是只在一个查询中,而不是每个Foo的一个查询中,不涉及延迟加载。此外,将条形图设置为“即时抓取”也不是一个选项

例如,如果这是我的数据(伪代码,为了简单起见,我将id和baz组合成简单的“id”):

我需要在一次查询中返回id为2和4的条。我真的不知道该怎么做


如果有必要,它可以是HQL,但最好是GORM查询。

不确定这是否是最好的方式,但我认为它会给出结果

:)

虽然我已经删除了您的复合映射约束,然后尝试了它,但它对我有效:)

或使用where查询:

def km = Bar.where {
            foo.someDate==someDate

        }
println(km.list())
如果您已经有foo列表,则可以通过findAll闭包进行过滤:

fooList.findAll{it.someDate in it.bars.someDate} 
:)

试试这个:

Bar.executeQuery("select b from Bar b join b.foo as f where b.someDate = f.someDate and f in :fooList", [fooList: fooList])

这将查询所有的foo,对吗?我只想让它查询我目前拥有的列表。是的,我想它会查询所有的foos:)好的……不是我想要的。这可以修改为只使用现有的foo列表进行查询吗?因此,基本上你有一些foo列表,并希望对其运行查询?同样可以通过where query完成,但我认为你不需要它,但我已经在答案中添加了它,它可能会帮助其他人:)不是GORM,但它很简单,并且完全符合我的需要。
def km = Bar.where {
            foo.someDate==someDate

        }
println(km.list())
fooList.findAll{it.someDate in it.bars.someDate} 
Bar.executeQuery("select b from Bar b join b.foo as f where b.someDate = f.someDate and f in :fooList", [fooList: fooList])