HQL like运算符用于不区分大小写的搜索

时间:2012-11-07 08:57:50

标签: spring hibernate spring-mvc sql-like

我正在使用Jquery实现自动完成功能,当我输入名称时,它从数据库中获取记录,存储在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条记录,这是我无法做到的。

请帮忙......

2 个答案:

答案 0 :(得分:48)

将您的查询更改为

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

了解更多信息,请查看14.3 doc

答案 1 :(得分:12)

一个好的解决方案是:

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注入