На самом деле код, приведенный в примере, не показывает использование предикатов.Вот где проблема.Я предполагаю, что это эквивалентно довольно типичному:
//conjunction, will combine with 'AND'
query.where(predicates.toArray(new Predicate[0]));
Поскольку задокументировано , оно объединит предикаты с AND
:
Измените запрос наограничить результат запроса в соответствии с указанными предикатами ограничения
Один из способов объединения предикатов с OR
заключается в простом использовании CriteriaBuilder. или :
//disjunction, will combine with 'OR'
Predicate firstNameLikeAnyOf = cb.or(predicates.toArray(new Predicate[0]));
query.where(firstNameLikeAnyOf);