Собственный запрос данных Spring не позволяет оператору Postgres jsonb строка существовать (знак вопроса) - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь использовать оператор Postgres jsonb string существующие в собственном запросе SpringData.

Пример метода SpringData:

@Query(value = "SELECT t.id \n"
        + " FROM task AS t \n"
        + " WHERE (t.worker_ids \\? :workerId)\n"
        + " ORDER BY t.created_at\n",
        nativeQuery = true)
Optional<String> findMatchingTaskId(@Param("workerId") String workerId);

Где worker_ids имеет тип JSOB в базе данных. Я пытался исключить вопросительный знак с \\, но все еще получил ошибку ниже: org.postgresql.util.PSQLException: No value specified for parameter 2.

Есть ли способ использовать этот оператор с собственным запросом данных пружины?

1 Ответ

0 голосов
/ 29 ноября 2018

Все операторы в PostgreSQL используют базовую процедуру:

> SELECT oprname, oprcode FROM pg_operator WHERE oprname LIKE '%?%'

oprname | oprcode
--------------------------
?       | jsonb_exists
?|      | jsonb_exists_any
?&      | jsonb_exists_all
...

Таким образом, вы можете переписать ваш запрос, используя jsonb_exists(jsonb, text), например:

SELECT t.id
FROM task AS t
WHERE jsonb_exists(t.worker_ids, :workerId)
ORDER BY t.created_at
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...