2017-02-02 25 views
2

多少複雑な要件の組み合わせを使用してデータベースをクエリしたいとします。私はSQLを使ってこれを行う方法を知っていますが、このクエリの結果をHibernateにマップするのに問題があります。経験から私は通常これのようなことをする "適切な休止状態の方法"があることを知っていますが、私はそれを見つけるのに苦労しています。サブクエリのLIMITを含むSQLクエリをHibernateに変換する

抽出したいデータは、親子関係で構成されています。親エンティティCompanyと子エンティティEmployeeを呼び出しましょう。両者の関係はEmployeeToCompanyという表で指定されています。

会社の数が膨大であるため、最初の10文字しか取得しません。通常のJOINを実行してメインクエリにLIMITを設定すると、は最初の10社の社員/私は最初の10社の会社/従業員のペアをすべて取得したいと考えています。私はSession.createSQLQueryを使用して休止状態からこのクエリを実行しているんだけど、私はそれは難しい、これらの結果をマッピングするために見つける

​​

:私は次のSQLクエリを作成した理由です。問題は、結果をEmployeeCompanyエンティティの両方に戻したいということです。私はカスタムResultTransformerを作成してこれを行うことができましたが、結果は非常に控えめであり、よりよい方法があるはずです。

答えて

1

ネイティブSQLクエリを使用すると、SQL結合を記述できます。 したがって、私の考えは次のとおりです。 エンティティの結合コレクション(OneToMany)をマップします。 query.addJoin()を使用して結果をマップします。here Chapter 16.1.3

関連する問題