У меня возникла проблема с правильным выполнением этого собственного запроса к экземпляру 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