web-dev-qa-db-ja.com

大文字と小文字を区別しない検索のためのHQLのような演算子

Jqueryを使用してオートコンプリート機能を実装しています。名前を入力すると、dbからレコードがフェッチされます。dbに格納されているレコードは、大文字と小文字が混在しています。大文字と小文字を区別してレコードをフェッチするHQLクエリを作成しましたが、大文字と小文字を区別せずにレコードを取得する必要があります。これがクエリです

List<OrganizationTB> resultList = null;
Query query = session.createQuery("from DataOrganization dataOrg where dataOrg.poolName   
like '%"+ poolName +"%'");
resultList =  query.list();    

例:プール名、HRMSデータセット、Hrmsデータ、Hrデータなどがある場合、HRまたはhrと入力すると、3つのレコードすべてを取得する必要がありますが、取得できません。

助けてください...

23
madhu

クエリを

"from DataOrganization dataOrg where lower(dataOrg.poolName)   
like lower('%"+ poolName +"%')"

詳細については、14.3をご覧ください doc

55
Jigar Parekh

良い解決策は:

List<OrganizationTB> resultList = null;
Query query = session.createQuery("from DataOrganization dataOrg where lower(dataOrg.poolName) like :poolName");
query.setParameter("poolName", '%'+poolName.toLowerCase()+'%');
resultList =  query.list();

したがって、SQLインジェクションからコードを保護します

11
Vasile Bors