5

私のGrailsプロジェクトには、次のクラスがあります。

class A {
    static hasMany = [cs:C]
}

class B {
    static hasMany = [cs:C]
}

class C {
    static belongsTo = [a:A, b:B]
}

クラスAにクエリを実行し、BとCのすべての関連付けを熱心に持ってきたいと思います。次の基準クエリを試しましたが、AからCを反復処理すると、hibernateはレイジー初期化を使用してBオブジェクトをクエリします。

A.withCriteria() {
    fetchmode "cs", FetchMode.JOIN
    fetchMode "cs.b", FetchMode.JOIN
}

何か案は?

4

1 に答える 1

9

解決しました。

A.withCriteria() {
    cs{
        fetchMode "cs.b", FetchMode.JOIN
    }
}

または

A.withCriteria() {
    cs{
        b{
        }
    }
}

どちらの場合も、Hibernate は 2 つのクエリを使用しています。私が以前持っていた98よりもはるかに優れています;-)

于 2012-05-17T18:34:08.493 に答える