用于从Postgres数组过滤的JPA CriteriaBuilder

时间:2019-05-01 00:47:38

标签: hibernate jpa postgresql-9.1 hibernate-criteria jpa-2.1

需要帮助创建用于后续查询的过滤谓词

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

OR

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

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

表格格式

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 :(得分:0)

我发现与Postgres 9.5兼容,我们具有更多内置函数。其中之一是“ array_positions”,我将其重新用于检查是否存在element。  https://www.postgresql.org/docs/9.5/functions-array.html