27

我正在使用 Jquery 实现自动完成功能,当我输入名称时,它会从数据库中获取记录,存储在数据库中的记录是大写和小写字母的混合。我已经编写了一个 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 条记录,但我无法做到。

请帮忙...

4

2 回答 2

60

将您的查询更改为

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

有关更多信息,请查看 14.3文档

于 2012-11-07T09:09:05.177 回答
15

一个好的解决方案是:

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

所以你保护你的代码免受 SQL 注入

于 2015-10-17T13:44:15.993 回答