Нужна помощь в создании предиката фильтра для следующего запроса
SELECT * FROM table
where
'test_value' IN (SELECT unnest(data_array));
ИЛИ
Select *
FROM public.table
where 'test_value' = ANY (data_array);
JPA CriteriaBuilder ДЛЯ ВЫБОРА из массива Postgres.
Формат таблицы
id ,
(char varying)
data_array
(text[])
Я пытался создать фильтр для вышеуказанного запроса, но мне было трудно заставить работать фактический фильтр запроса.
Expression function = builder.function("unnest", String.class, root.get(criteria.getKey()));
Больше информации :-
Предикат имеет код
class FilterSpecificaion implements Specification {
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder builder) {...}
....
}





Я нашел обходной путь с Postgres 9.5, у нас больше встроенных функций. Один из них — «array_positions», и я переделал его, чтобы проверить, присутствует ли элемент. https://www.postgresql.org/docs/9.5/functions-array.html
Вы получили ответ на свою проблему
у вас есть пример того, как вам удалось это сделать, я использую внутреннюю функцию, которая является псевдонимом для оператора containsBy, но я просто не могу заставить это работать, продолжайте получать неизвестную ошибку функции, когда она проходит массив как varchar