Spring JPA Criteria API поиск по списку имен по списку json - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь создать спецификацию JPA, которая выполняет поиск в списке по списку json

@Override
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder builder) {

Expression<String> unitsNames = builder.function("json_array_elements", String.class, 
                                      root.<String>get("unitsNames"));

return builder.function("json_extract_path_text", String.class, 
                               unitsNames, builder.literal("en"))
                    .in(this.unitsNames);
}

Я получил исключение:

Internal Exception: org.postgresql.util.PSQLException: 
ERROR: set-returning functions are not allowed in WHERE

Массив Json должен быть похож на

[{"en":"D1","ar":"D1"},{"en":"D2","ar":"D2"}]

и UnitArray:

D1 , D2

, когда пытаетесь использовать его как sql, он работает как

SELECT *
FROM TABLENAME
inner join json_array_elements(unitNames) data
on ((json_extract_path_text(data, 'en')) in ('D1'));

, и это прекрасно работает, но я не знаю, как использовать псевдоним вAPI критериев postgres

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