0

Spring Web モデル ビュー コントローラー (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 ではなく equals であることに気付きました

私が探しているスプリングは"iOS/032/027"です 。"iOS/032/027""iOS/""027"

4

1 に答える 1

0

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

str_param like concat(:searchString,'%') 

Jpql docの状態

LIKE は、2 つの文字列が一致するかどうかを評価します。'%' と '_' は有効なワイルドカードであり、ESCAPE 文字はオプションです

于 2016-12-16T13:36:36.437 に答える