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();
    }
 
     
    