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
在为以下查询创建过滤器谓词时需要帮助
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