【问题标题】:Hibernate Named Query Using Like and % % operators?使用 Like 和 % % 运算符的休眠命名查询?
【发布时间】:2012-12-16 15:42:17
【问题描述】:

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

给整个字符串firstName=Narasimham时工作正常

但是当我们给出Narasimham 的任何字符时它不起作用,即an

实际上我的想法是我给Like 运算符和% % 一起工作,所以它可以工作给定字符串的任何字符..

【问题讨论】:

    标签: java hibernate jpa hql


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      但是当我们赋予 Narasimham 的任何角色时它不起作用,即 或n

      因为您正在进行区分大小写的搜索。请改用NNaNar。如果您想执行不区分大小写的搜索,请尝试使用upperlower。喜欢

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

      其实我的想法是我用 % % 给 Like 运算符

      searchKeyword+"%" 表示返回值 searchKeyword 开头。
      "%"+searchKeyword+"%" 表示返回值包含 searchKeyword。
      根据您的要求决定。

      【讨论】:

        【解决方案3】:

        我会将我的声音添加到@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();
        }
        

        因为 '%' 是查询的一部分而不是你以后可能填写的参数

        CONCAT() 函数将两个或多个表达式相加。 https://www.w3schools.com/sql/func_mysql_concat.asp

        【讨论】:

          猜你喜欢
          • 2010-12-26
          • 2014-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多