Quantcast
Channel: Criteria API concat 3 fields value - Stack Overflow
Viewing all articles
Browse latest Browse all 2

Criteria API concat 3 fields value

$
0
0

How to make a concatenation of 3 fields? I want to make a search by input string. Expressions like

%firstName%LastName%Patr%

with different orders possible %LastName%Patr%firstName% etc

How can i do that?

My code do search only for one field, but i need for 3 at the same time

  @Override
    public List<Teacher> searchByString(String str) {

        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Teacher> criteriaQuery = criteriaBuilder.createQuery(Teacher.class);
        Root<Teacher> teacherRoot = criteriaQuery.from(Teacher.class);

        Expression concatForOtch = criteriaBuilder.concat(teacherRoot.get("otch"),"%");

        Expression concatForName = criteriaBuilder.concat(teacherRoot.get("name"),"%");

        Expression concatForFam = criteriaBuilder.concat(teacherRoot.get("fam"),"%");

        Expression almostFinalExpression = criteriaBuilder.concat(concatForName,concatForOtch);

        Expression finalExpression = criteriaBuilder.concat(concatForFam,almostFinalExpression);

        Expression fullExpression = criteriaBuilder.concat("%", finalExpression);

        Predicate pr = criteriaBuilder.like(fullExpression,"%" + str + "%");

        criteriaQuery.where(pr);

        return em.createQuery(criteriaQuery).getResultList();

    }

Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>