JPA CriteriaBuilder 用于从 Postgres 数组中过滤

JPA CriteriaBuilder FOR Filtering from Postgres Array

在为以下查询创建过滤器谓词时需要帮助

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

Select *
FROM public.table
where 'test_value' = ANY (data_array);

用于从 Postgres 数组中进行选择的 JPA CriteriaBuilder。

Table格式

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