和SQL查询一样,HQL也用like关键字进行模糊查询。模糊查询常用于当用户正在输入关键字时,就以该关键字开头去做查询。比如我们在百度的搜索框里输入”Hibernate”,系统马上帮我们查询到了以”Hibernate”开头的一些相关关键字.
配合like关键字使用的是通配符,HQL中可以使用以下通配符:
通配符 | 作用 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
下面举例说明用%常见的两种情况
1. 检索LastName以”A“开头的Person对象
query = session.createQuery("from Person p where p.lastName like 'A%'");
2.如果是动态查询,也就是LastName是变量,在程序运行时才能明确查询内容怎么办呢?如下:
query = session.createQuery("from Person p where p.lastName like :lastName);
query.setParameter(lastName, lastName + "%");
参考
【1】http://www.w3school.com.cn/sql/sql_like.asp
【2】http://www.w3school.com.cn/sql/sql_wildcards.asp