Оператор HQL like для поиска без учета регистра

я реализую функцию автозаполнения с помощью Jquery, когда я набираю имя, он извлекает запись из БД, записи, хранящиеся в БД, представляют собой смесь заглавных и маленьких букв. Я написал запрос HQL, который возвращает мне записи с учетом регистра, но мне нужно записывать независимо от случая. Вот запрос,

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

Ex: если у меня есть имена пулов, набор данных HRMS,данные Hrms, данные Hr и т. д... если я набираю HR или hr, мне нужно получить все 3 записи, которых я не способен.

пожалуйста, помогите...

2 ответов


изменить свой запрос

"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-инъекции