Оператор 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-инъекции