2016-12-16 5 views
0

私は、Spring Web Model-View-Controller(MVC)フレームワークに基づいたプロジェクトを持っています。 Spring Web Model-View-Controller(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; 
     } 
    } 

でこのメソッドを持っている。しかし、私は、クエリがLIKEをしないことに気づいたが"iOS/032/027"のためではなく、ために[OK]を、私は探しています春は"iOS/032/027"ある

に等しいです。 "iOS/"または"027"

答えて

0

のような操作に有効なワイルドカードを追加してみてください。

str_param like concat(:searchString,'%') 

Jpql doc状態

LIKEは、2つの文字列が一致した場合、 '%' を評価し、 '_' は有効なワイルドカードであり、ESCAPE文字はオプション

です
関連する問題