Jav*_*per 33 java hibernate jpa hql
在我的Hibernate JPA示例代码中..
public List<AttendeesVO> addAttendees(String searchKeyword) {
TypedQuery<AttendeesVO> query = entityManager.createQuery(" select at from AttendeesVO at where at.user.firstName LIKE :searchKeyword",AttendeesVO.class);
query.setParameter("searchKeyword", searchKeyword+"%");
return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)
在给出整个String时它工作正常 firstName=Narasimham
但是当我们给出Narasimhamie a或者任何字符时,它不起作用n
实际上我的想法是我给Like操作员,% %所以它工作给定字符串的任何字符..
ssk*_*ssk 54
您正在使用 query.setParameter("searchKeyword", searchKeyword+"%");
代替 query.setParameter("searchKeyword", "%"+searchKeyword+"%");
第一个将返回行Narasimham N Na Nar Nara等.
xyz*_*xyz 18
但是当我们给出Narasimham的任何角色即a或n时它不起作用
因为您正在进行区分大小写的搜索.尝试N,Na,Nar来代替.如果您想执行不区分大小写的搜索,请尝试使用upper或lower.喜欢
entityManager.createQuery("select at from AttendeesVO at where lower(at.user.firstName) LIKE lower(:searchKeyword)",AttendeesVO.class);
Run Code Online (Sandbox Code Playgroud)
实际上我的想法是我给%运算符%%
searchKeyword+"%"表示以 searchKeyword 开头的返回值.
"%"+searchKeyword+"%"表示包含 searchKeyword的返回值.
根据您的要求决定.
小智 8
我会将我的声音添加到 @ssk 以在关键字前后使用两个 %。或者,如果您在查询本身中像这样配置它,我认为它更专业的解决方案:
public List<AttendeesVO> addAttendees(String searchKeyword) {
TypedQuery<AttendeesVO> query = entityManager.createQuery(" select at from AttendeesVO
at where at.user.firstName LIKE CONCAT('%',:searchKeyword,'%')",AttendeesVO.class);
query.setParameter("searchKeyword", searchKeyword);
return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)
因为 '%' 是查询的一部分,而不是您稍后可能填写的参数
CONCAT() 函数将两个或多个表达式相加。 https://www.w3schools.com/sql/func_mysql_concat.asp
| 归档时间: |
|
| 查看次数: |
79952 次 |
| 最近记录: |