Как спрятать, где утверждение в функции в postgres? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть столбец JSON, который содержит массив JSON, например:

[{"type":"NAME","values":[{"value":"123456", "locale":"en"}]}]

Мне нужно выполнить поиск по типу = ИМЯ и значению, как% 234%.

Мне удалось написать следующий запрос:

SELECT * FROM my_schema.entry
     JOIN LATERAL json_array_elements(attributes) AS attr (value)
          ON attr.value ->> 'type' = 'NAME'
     JOIN LATERAL json_array_elements(attr -> 'values') AS attr_value(value) 
          ON attr_value ->> 'value' like '%234%';

Проблема в том, что я не понимаю, как я могу использовать его в спецификации Spring Data JPA.

Вот почему у меня была идея скрыть этот запрос внутри функции, чтобы получить что-то вроде этого:

SELECT * FROM my_schema.entry e WHERE entry_name_matches(e, '%234%') IS true;

Есть ли способ как "спрятать" элементы JOIN LITERAL внутри функции?

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