web-dev-qa-db-fra.com

Opérateur de type HQL pour la recherche insensible à la casse

J'implémente une fonctionnalité de saisie semi-automatique à l'aide de Jquery, lorsque je tape le nom, il récupère l'enregistrement de la base de données, les enregistrements stockés dans la base de données sont un mélange de majuscules et de minuscules. J'ai écrit une requête HQL qui me récupère les enregistrements en respectant la casse, mais je dois enregistrer indépendamment de la casse. Voici la requête,

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

Ex: si j'ai des noms de pool, un ensemble de données HRMS, des données Hrms, des données Hr etc ... si je tape HR ou h, j'ai besoin d'obtenir les 3 enregistrements, ce que je ne peux pas.

Veuillez aider ...

23
madhu

changez votre requête en

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

pour plus d'informations jetez un oeil 14.3 doc

55
Jigar Parekh

Une bonne solution est:

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();

Ainsi, vous protégez votre code contre l'injection SQL

11
Vasile Bors