我的 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();
我收到以下错误:错误:函数 jsonb_set(jsonb,unknown,integer) 不
有什么想法可以运行更新 JSON 中的 myCount
列的查询吗?
最佳答案
function jsonb_set(jsonb, unknown, integer) does not
告诉您正在尝试使用整数值作为最后一个参数来调用函数。但该函数定义为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/