postgres jsonb + Spring JdbcTemplate ОШИБКА: литерал некорректного массива - PullRequest
0 голосов
/ 28 апреля 2020

Мое подготовленное утверждение выглядит так:

SELECT m1.id, m1.text 
 FROM message m1 WHERE m1.tags ??& ?

Где tags - это тип jsonb. Вот как я заполняю свои параметры:

List<Object> queryParameters = new ArrayList<>();
JDBCArrayBasic jdbcTagsArray = new JDBCArrayBasic(
            tagIds, org.hsqldb.types.Type.SQL_VARCHAR_DEFAULT);
queryParameters.add(new String[]{"tag1", "tag2"});

return jdbcTemplate.query(statementBuilder.build(), queryParameters.toArray(),
        rowMapper); 

К сожалению, это не с этой ошибкой: Вызывается: org. postgresql .util.PSQLException: ОШИБКА: литерал некорректного массива: "ARRAY [' 123 '] "Detail: значение массива должно начинаться с" {"или информации о размерах.

Я попытался преобразовать параметр в подготовленном выражении в jsonb:

SELECT m1.id, m1.text 
 FROM message m1 WHERE m1.tags ??& ?::jsonb

Но Получил: Вызвано: org. postgresql .util.PSQLException: ОШИБКА: невозможно привести символ типа, изменяющийся [] к jsonb ошибка.

Любая идея, как заставить его работать, пока еще используя подготовленный оператор JdbcTemplate?

...