Hibernate の HQL について質問です。


Webのシステムで、DBから一覧を取得する際、最大3つの検索条件をANDで渡して一覧から一部を抽出したいとします。

例えばa,b,cの3つの検索条件があったとして、
where hoge.a = :a and hoge.b = :b and hoge.c = :c
のようなHQLを書いて、ロジックからa,b,cに値を渡してやればAND条件で検索可能と思います。

しかし、必ずしも3つすべての検索条件が設定されない場合(例えばaとbだけ値がセットされ、cだけ値がセットされない)、上記のような書き方では対応できないのではと考えています。

このように、where句で条件指定を複数したいが、その指定の数が変わる場合、どんなHQLを発行すればいいのでしょうか。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/10/09 12:46:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント65pt

HQLは分かりませんがSQLのように

(:c IS NULL OR hoge.c = :c)に書けば、C:NULLの時も

問題なく処理できます。ただHSLでこういう書き方ができるかか?

わからないのでなんともいえませんが。

SQLのパラメータクエリで、例えばaとbだけ値がセットされ、cだけ値がセットされないな場合は上記のようなSQLを使います。

id:tono5652

ありがとうございます。試してみたらできました。

2007/10/09 12:45:39

その他の回答1件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140ここでベストアンサー

ポイント65pt

HQLは分かりませんがSQLのように

(:c IS NULL OR hoge.c = :c)に書けば、C:NULLの時も

問題なく処理できます。ただHSLでこういう書き方ができるかか?

わからないのでなんともいえませんが。

SQLのパラメータクエリで、例えばaとbだけ値がセットされ、cだけ値がセットされないな場合は上記のようなSQLを使います。

id:tono5652

ありがとうございます。試してみたらできました。

2007/10/09 12:45:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません