繁体   English   中英

Java持久性查询语言-LIKE

[英]The Java Persistence Query Language - LIKE

我有一个基于Spring Web model-view-controller(MVC)框架的项目。 Spring Web模型-视图-控制器(MVC)框架的版本为3.2.8。

我的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" ,对于"iOS/032/027" ,但对于"iOS/""027"不是

尝试将有效的通配符附加到like操作:

str_param like concat(:searchString,'%') 

Jpql文档状态

LIKE评估两个字符串匹配'%'和'_'是否为有效的通配符,而ESCAPE字符是否为可选

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM