Как использовать данные Spring JPA для запроса столбца JSONB?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как использовать данные Spring JPA для запроса столбца JSONB?

Сообщение Anonymous »

У меня возникла проблема с правильным выполнением этого собственного запроса к экземпляру Postgres 9.4.

В моем репозитории есть метод:

@Query(value = "SELECT t.* " +
"FROM my_table t " +
"WHERE t.field_1 = ?1 " +
"AND t.field_2 = 1 " +
"AND t.field_3 IN ?2 " +
"AND t.jsonb_field #>> '{key,subkey}' = ?3",
nativeQuery = true)
List getEntities(String field1Value,
Collection field3Values,
String jsonbFieldValue);


Но журналы показывают следующее:

SELECT t.* FROM my_table t
WHERE t.field_1 = ?1
AND t.field_2 = 1
AND t.field_3 IN ?2
AND t.jsonb_field ? '{key,subkey}' = ?3


И я получаю это исключение:


Внутреннее исключение: org.postgresql.util.PSQLException: для параметра 2 не указано значение
.


Я зарегистрировал параметры непосредственно перед вызовом метода, и все они предоставлены.

Я не уверен, почему #>> показывает ? в журнале. Нужно ли мне экранировать #>>? Нужно ли форматировать коллекцию для IN? Нужно ли мне избегать пути json?

Когда я выполняю запрос непосредственно к базе данных, он работает. Пример:

SELECT *
FROM my_table t
WHERE t.field_1 = 'xxxx'
AND t.field_2 = 1
AND t.field_3 IN (13)
AND t.jsonb_field #>> '{key,subkey}' = 'value'


Подробнее здесь: https://stackoverflow.com/questions/439 ... onb-column
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»