27

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つのレコードすべてを取得する必要がありますが、取得できません。

助けてください...

4

2 に答える 2

60

クエリをに変更します

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

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

于 2012-11-07T09:09:05.177 に答える
15

良い解決策は次のとおりです。

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

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

于 2015-10-17T13:44:15.993 に答える