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つのレコードすべてを取得する必要がありますが、取得できません。
助けてください...
クエリを
"from DataOrganization dataOrg where lower(dataOrg.poolName)
like lower('%"+ poolName +"%')"
詳細については、14.3をご覧ください doc
良い解決策は:
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インジェクションからコードを保護します