Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否使用Like和%%运算符休眠命名查询?_Java_Hibernate_Jpa_Hql - Fatal编程技术网

Java 是否使用Like和%%运算符休眠命名查询?

Java 是否使用Like和%%运算符休眠命名查询?,java,hibernate,jpa,hql,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.cla

在我的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();
}
公共列表添加与会者(字符串搜索关键字){
TypedQuery query=entityManager.createQuery(“从AttendeesVO中选择at at at where at at.user.firstName LIKE:searchKeyword”,AttendeesVO.class);
query.setParameter(“searchKeyword”,searchKeyword+“%”);
返回query.getResultList();
}
当给出整个字符串时,它工作正常
firstName=Narasimham

但当我们给出
Narasimham
的任何字符时,即
a
n


实际上,我的想法是,我给
一个类似于
%%
的操作符,因此它可以处理给定字符串的任何字符。

您使用的是
query.setParameter(“searchKeyword”,searchKeyword+“%”)

而不是
query.setParameter(“searchKeyword”、“%”+searchKeyword+“%”)

第一个将返回
Narasimham
N
Na
Nar
Nara
等的行

但是,当我们赋予纳拉西姆的任何角色,即a.e 或n

因为您正在进行区分大小写的搜索。尝试
N
Na
Nar
。如果要执行不区分大小写的搜索,请尝试使用
upper
lower
。像

entityManager.createQuery("select at from AttendeesVO at where lower(at.user.firstName) LIKE lower(:searchKeyword)",AttendeesVO.class);  
事实上,我的想法是,我正在给%

searchKeyword+“%”
表示返回以searchKeyword开头的值。
“%”+searchKeyword+“%”
表示包含searchKeyword的返回值。

根据您的要求决定。

我会将我的声音添加到@ssk,以便在关键字前后使用2%。 或者,如果您在查询本身中这样配置它,我认为它是更专业的解决方案:

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();
}
公共列表