Postgres запрос - обновить поле в столбце json с типом текста - PullRequest
0 голосов
/ 17 марта 2020

У меня есть столбец в моей postgres БД с именем metadata, в котором хранится строка JSON, тип: TEXT.

Я пытаюсь выполнить запрос для обновления поле с именем myCount внутри JSON. Я использую Spring Boot и JDB C.

String query = "UPDATE " + mTableName + " SET metadata = jsonb_set(metadata::jsonb, '{myCount}', ?)::text" +
                " WHERE scope = ?";
        PreparedStatement preparedStmt = jdbcTemplate.getDataSource().getConnection().prepareStatement(query);
        preparedStmt.setInt   (1, myCount);
        preparedStmt.setString(2, scope);

        // execute the java preparedstatement
        return preparedStmt.executeUpdate();

Я получил следующую ошибку: ERROR: function jsonb_set(jsonb, unknown, integer) does not

В любом случае я могу запустить запрос, который обновляет myCount столбец внутри JSON?

1 Ответ

0 голосов
/ 17 марта 2020

функция jsonb_set (jsonb, unknown, integer) не

Сообщает, что вы пытаетесь вызвать функцию с целочисленным значением в качестве последнего параметра. Но функция определена как jsonb_set(jsonb, text[], jsonb), поэтому вам нужно преобразовать целочисленное значение в значение JSONB:

SET metadata = jsonb_set(metadata::jsonb, '{myCount}'::text[], to_jsonb(?))::text" 
...