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

2022-09-01 03:35:10

在我的休眠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();
}

当给出整个字符串时,它工作正常firstName=Narasimham

但是,当我们赋予任何特征即或Narasimhaman

实际上,我的想法是,我正在给运算符,所以它工作给定字符串的任何字符。Like% %


答案 1

您正在使用query.setParameter("searchKeyword", searchKeyword+"%");

而不是query.setParameter("searchKeyword", "%"+searchKeyword+"%");

第一个将返回等的行。NarasimhamNNaNarNara


答案 2

但是,当我们赋予Narasimham的任何特征(即a或n)时,它就不起作用了。

因为您正在执行区分大小写的搜索。请尝试 、 。如果要执行不区分大小写的搜索,请尝试使用 或 。喜欢NNaNarupperlower

entityManager.createQuery("select at from AttendeesVO at where lower(at.user.firstName) LIKE lower(:searchKeyword)",AttendeesVO.class);  

实际上我的想法是我给像运算符与%%

searchKeyword+"%"表示以 search 关键字开头的返回值。
表示返回包含搜索关键字的值。
根据您的要求决定。"%"+searchKeyword+"%"


推荐