我的postgres数据库中有一列名为metadata的列,该列存储JSON字符串,类型为TEXT

我正在尝试运行查询以更新JSON中名为myCount的字段。我正在使用Spring Boot和JDBC。

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

有什么想法可以运行查询来更新JSON中的myCount列吗?

最佳答案

函数jsonb_set(jsonb,unknown,integer)不


告诉您您正在尝试使用整数值作为最后一个参数来调用该函数。但是该函数定义为jsonb_set(jsonb, text[], jsonb),因此您需要将整数值转换为JSONB值:

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

关于java - Postgres查询-使用文本类型更新json列中的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60726157/

10-09 05:00