次のドメイン関係があります。
A hasMany = [bs: B]
B belongsTo = [a:A, c:C]
C hasMany = [bs: B]
すべての内部で次のクエリを実行すると、Thread.start {}
すべてがうまくいきます(コレクションをパラメーターとして呼び出したメソッドでコレクション全体にアクセスできます)。
def aList = A.withCriteria {
fetchMode('bs', FetchMode.JOIN)
fetchMode('bs.c', FetchMode.JOIN)
isNotNull('property')
}
ただし、次のようにbs
コレクションをフィルタリングすると:
def aList = A.withCriteria {
fetchMode('bs', FetchMode.JOIN)
fetchMode('bs.c', FetchMode.JOIN)
isNotNull('property')
bs {
eq('property', C.get(1))
}
}
failed to lazily initialize a collection of role: A.bs, no session or session was closed
アクセスしようとすると取得しますaList.bs
。私は何か間違ったことをしていますか?どちらの場合も同じ SQL が生成されます...