2011-07-15 15 views
2

Grailsでは、1対多またはbelongsTo(存在する場合)などのドメインクラス間の関係を明確に示すようにドメインクラスを定義します。 GrailsはDRYに基づいているため、Grails DomainClass.ExecuteQueryメソッドで複雑なHQLクエリを実行するときにjoinキーワードを使用する必要はありませんか?GrailsのGORMクエリでのjoinの使用

答えて

3

GrailsはあなたのHQLを書く方法を変えませんあなたのGrailsドメインクラスまたはPOJOを使用するかどうかは同じです。オブジェクトグラフをナビゲートするクエリを記述する必要がある場合は、HQLの場合と同じ構文をFROM parent p JOIN p.child c WHERE c.age = 10のように使用する必要があります。 Criteriaクエリは同じ方法で動作しますが、クロージャを使用するだけです。

詳細については、documentation(セクション5.4.3)をご覧ください。

+2

この結合は不要です。これは 'FROM parent p where p.child.age = 10'と書くことができます –

1

一般的に、Hibernateはドメインクラスの関係に基づいてテーブルの関係を知っているため、明示的な結合は必要ありません。 1つの例外はコレクションであり、ジョインを使用してデフォルトの動作をカスタマイズすることは可能です。 HQLの最良のリソースは、Hibernateのドキュメントです。http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html