Как сделать объединение 3 полей? Я хочу сделать поиск по входной строке. Такие выражения, как
% firstName% LastName% Patr%
с возможными различными заказами% LastName% Patr% firstName% и т. Д.
Как я могу это сделать?
Мой код ищет только одно поле, но мне нужно 3 одновременно
@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();
}