JPA CriteriaBuilder для фильтрации из массива Postgres - PullRequest
0 голосов
/ 01 мая 2019

Нужна помощь в создании фильтра Предикат для следующего запроса

SELECT * FROM table
    where
    'test_value' IN (SELECT unnest(data_array));

OR

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) {...} 
....
}

1 Ответ

0 голосов
/ 04 мая 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...