参考までに、これにもっと良いタイトルを提案してください。次のドメイン モデルがあります (これを制御することはできません)。
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"
}
}
}
}
私の問題は、Foos のリストがあり、Foo.someDate == Bar.someDate であるすべてのバーを見つける必要がありますが、各 Foo のクエリではなく 1 つのクエリでのみ、遅延読み込みが含まれていないことです。また、バーを熱心なフェッチに設定することはオプションではありません。
たとえば、これが私のデータの場合 (疑似コード、簡単にするために 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 のバーを 1 つのクエリで返す必要があります。これにアプローチする方法が本当にわかりません。
必要に応じて HQL にすることもできますが、GORM クエリにすることをお勧めします。