2016-12-16 79 views
0

我有一个基于Spring Web模型 - 视图 - 控制器(MVC)框架的项目。 Spring Web模型 - 视图 - 控制器(MVC)框架的版本是3.2.8。Java Persistence Query Language - LIKE

我有这个方法在我的DAO

@Override 
    public List<Application> findByQuickSearch(String searchString) { 

     final StringBuilder queryString = new StringBuilder(" select app from Application app where upper (ticket_id) like :searchString or upper (id) like :searchString "); 

     queryString.append(" and app.status != " + Status.DRAFT.ordinal()); 

     queryString.append(" order by app.submissionTime desc "); 

     try { 

      final Query query = getEntityManager().createQuery(queryString.toString()); 

      searchString = searchString.replace("!", "!!") 
         .replace("%", "!%") 
         .replace("_", "!_") 
         .replace("[", "![") 
         .trim() 
         .toUpperCase(); 


      System.out.println ("searchString -----> " + searchString); 


      query.setParameter ("searchString", searchString);      

      return query.getResultList(); 


     } catch (RuntimeException re) { 
      log.error("findByCompetentBodyAndStatus failed", re); 
      throw re; 
     } 
    } 

但我意识到,查询不很喜欢,但等于

我寻找春天是"iOS/032/027",确定为"iOS/032/027",但不"iOS/""027"

回答

0

尝试追加一个有效的通配符类似操作:

str_param like concat(:searchString,'%') 

Jpql doc状态

LIKE评估,如果这两个字符串匹配, '%' 和 '_' 是有效的通配符和转义字符是可选的

相关问题