我的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/