0

次のドメイン関係があります。

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 が生成されます...

4

0 に答える 0