仅供参考,请随时为此建议一个更好的标题。我有以下域模型(我们无法控制):
class Foo {
int id
String baz
Date someDate
static hasMany = [bars:Bar]
static mapping = {
id composite: [ "id", "baz" ]
}
}
class Bar {
int id
String baz
Date someDate
Foo foo
static mapping = {
id composite: ["id", "baz", "someDate"]
columns {
foo([:]) {
column name: "id"
column name: "baz"
}
}
}
}
我的问题是:我有一个 Foo 列表,我需要找到 Foo.someDate == Bar.someDate 的所有 Bar,但仅在一个查询中而不是对每个 Foo 的查询中,不涉及延迟加载。此外,将 Bars 设置为渴望获取也不是一种选择。
例如,如果这是我的数据(伪代码,为简单起见,我将 id 和 baz 组合成简单的“id”):
[
Foo (someDate:4/1/2013)
|___ bars: [{someDate:12/4/2012, id:1}, {someDate:4/1/2013, id:2}]
Foo (someDate:5/10/2012)
|___ bars: [{someDate:{4/1/2013, id:3}
Foo (someDate:3/3/2013)
|___ bars: [{someDate:3/3/2013, id:4}, {someDate:9/5/2013, id:5}]
]
我需要在一个查询中返回 id 为 2 和 4 的 Bars。我真的不知道如何解决这个问题。
如有必要,它可以是 HQL,但最好是 GORM 查询。