Home > スポンサー広告 > hqlでキーワード検索メモ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/20-6cb49817
Listed below are links to weblogs that reference
スポンサーサイト from Netforest Developer's Note

Home > スポンサー広告 > hqlでキーワード検索メモ

Home > Hibernate > hqlでキーワード検索メモ

hqlでキーワード検索メモ

こんにちは、引き続きmattyです。
あるキーワードを持つデータをデータベースから抽出する際、検索対象となるカラムが多くなるとwhere句が煩雑になります。 そこで連結を用いて記述してみました。
以下の記述はhql部分の抜粋で、説明の為カラムの数は4つにしています。


例) 顧客管理でキーワード検索(対象カラムは以下)

  • name:顧客名
  • prefecture:都道府県
  • city:市区町村以下
  • building:ビル/マンション名(任意:null許可)

連結使用前

		StringBuilder hql = new StringBuilder();
		hql.append("from User user ");
		hql.append("where user.name like :keyword ");
		hql.append("or user.prefecture like :keyword ");
		hql.append("or user.city like :keyword ");
		hql.append("or user.building like :keyword ");

連結使用後

		StringBuilder hql = new StringBuilder();
		hql.append("from User user ");
		hql.append("where (user.name||user.prefecture||user.city||coalesce(user.building,'')) like :keyword ");

値がnullの項目と連結すると、他の項目に値があっても結果がnullになってしまうので coalesce関数を用いて対処しています。上記でcoalesce関数はuser.buildingがnullだったら空文字を返しています。
SQL-92標準の構文なので、ほとんどのデータベースで対応しています。

Comments:0

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/20-6cb49817
Listed below are links to weblogs that reference
hqlでキーワード検索メモ from Netforest Developer's Note

Home > Hibernate > hqlでキーワード検索メモ

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。