1

設定:

3 つのドメイン クラス A、B、C。A と B はプラグイン内にあります。C は、このプラグインに依存するアプリケーションにあります。

class A{
    B b
    static mapping = {
        b fetch: 'join'
    }
    ...
}

class C extends A{
    String name
    ...
}

C.list().each{
    println it.b.name
}

問題:

ドキュメント ( http://www.grails.org/doc/1.3.x/ref/Database%20Mapping/fetch.html ) で説明されているように、fetch: "join" は、hibernate が println 行ごとに 1 つのクエリのみを使用するように強制する必要があります。残念ながら、結合のない選択クエリが 2 つあります。

私の調査

新しい Grails プロジェクトを作成しましたが、ドキュメントに記載されているとおりに動作しますが、クラス A は外部プラグインにありません。

質問

上記の例で fetch: "join" が無視される理由は何か分かりますか?

4

1 に答える 1

0

2.x の時点で、基準を使用する場合、フェッチ/eager 結合は無視されます。

このバグ レポートを参照してください: https://jira.grails.org/browse/GRAILS-9829

これはかなり大きな問題ですが、Hibernate3 が原因であるため、Grails では簡単に解決できません。

フェッチ/イーガージョインを可能にするには、HQL を使用する必要があります。

于 2014-09-30T12:14:13.130 に答える