2011-12-15 23 views
0

Hibernateと、HQLで動的SQLクエリを生成する能力について何か知っていますか?Hibernateと動的SQL

私はあなたが投稿していただければ幸いですが、私はHibernateのドキュメントでそれについて何も見つけることができません。

敬具 ゲイブ

はので、多分、私は正確に意味するものを//編集。いくつかのHQLコードがEXECUTE(postgres用)のようなものを使用するSQLクエリを生成するかどうか疑問に思っています

+0

あなたの意図がまだ明確ではありません。なぜあなたは文を実行する必要がありますか?解決するあなたの本当の*問題は何ですか? –

答えて

0

あなたが目指しているものは何ですか? HibernateのHQLは常にSQLを生成し、入力に基づいてHQLを別々に配置することができます。各順列に対して常に新しいSQLを生成して実行します。 Hibernateをプリコンパイル/キャッシュクエリにすることはできますが、これは単にパフォーマンスの最適化であり、最初の関心事ではありません。

また、私はCriteria APIを調べることで、たくさんの文字列で作業するのではなく、より多くのオブジェクト指向を保つことができます。

+0

EXECUTE SQLステートメントを生成するためにhibernateを使用したい –

+0

"より多くのオブジェクト指向"という基準には同意しません。 HQLは非常にオブジェクト指向ですが、javaまたはxml内の文字列に格納されている別の言語です。基準はそれほど強力ではありません。 (HQLを組み込むための文字列操作の代わりに)動的クエリには推奨されます。 –

+0

@StefanSteinegger:私の編集を見てください –

0

あなたは、動的な引数を使用して静的クエリの話をしている場合は、上のベースと完全に動的に作成されたクエリの話をしている場合は、構文は

select f from Foo f where f.bar = ? and f.zim = ? 

または、名前付きパラメータ

select f from Foo f where f.bar = :bar and f.zim = :zim 

であります一連の基準を使用する場合、使用するAPIはCriteria APIです。

どちらも主にHibernateリファレンスドキュメントで説明されています。

+0

私はEXECUTE SQL文を生成するために休止状態にします –