在我的Java项目中,我是usinq、JOOQ,我希望更新JSONB值。但我的建造失败了。
我写了一段代码:
DSL.using(connection).update(USER_SETTINGS)
.set(USER_SETTINGS.SETTING_VALUE, field("{\"filtersValue\":{\"page\":0,\"size\":100}, \"visibleCount\":100}", JSONB.class))
.where(USER_SETTINGS.USER_ID.eq(98383L))
.execute();
我收到了下一条信息:
org.jooq.exception.DataAccessException:
SQL [update "sbcm_sys"."user_settings" set "setting_value" = "filtersValue":{"page":0,"size":100, "visibleCount":100} where "sbcm_sys"."user_settings"."user_id" = ?]; ERROR: syntax err
or at or near ":"
Position: 71
Caused by: org.postgresql.util.PSQLException:
ERROR: syntax error at or near ":"
Position: 71
我犯错的地方?
您使用的是dsl.field(String)
,它用于纯SQL模板,而本应使用dsl.val(String)
,它用于绑定值。
有关进一步澄清,请参阅这篇博客文章:https://blog.jooq.org/whats-a-string-in-the-jooq-api/
具有以下数据模型: 我需要将所有价格键更新为新名称cost。在静态字段上很容易做到这一点,使用: 结果: 但是我也需要在分解数组中做这些。 在不知道细分数组中的项目数的情况下,我如何做到这一点?换句话说,我如何在jsonb数组的每个元素上应用函数。 非常感谢。
我有一个带有jsonb列的PostgreSQL表,其中包含一个字符串数组,这些字符串是标记值,如下所示:。我有一个自定义绑定,用于将JSON与jackson JSONode进行转换。 自定义绑定定义如下:https://gist.github.com/helgeg/0C0B14228F75E91B7542BD6979A05B49 用基本的find读取记录,然后我提取JSON列,如下所示: 这是使用
本文向大家介绍postgresql 使用JSONb运算符,包括了postgresql 使用JSONb运算符的使用技巧和注意事项,需要的朋友参考一下 示例 创建数据库和表 填充数据库 让我们看一下表格中的所有内容: 输出: -> 运算符从JSON列中返回值 选择1列: 输出: 选择2列: 输出: -> 与 ->> 该->运算符返回原始JSON类型(可能是一个对象),而->>返回文本。 返回嵌套对象
我正在使用(https://github.com/typeorm/typeorm)作为ORM库来连接postgresql数据库。我将几列保存为类型。现在我需要支持部分更新json数据,例如, 如果我只更新,我不想在更新语句中覆盖lastName。支持,我可以使用它来部分更新字段,但我如何使它与图书一起工作?
问题内容: 使用运算符将产生以下结果: 我希望能够实现以下结果(对于操作员来说只是一个占位符): 因此,您可以看到顶级键的子值已“合并”,使得结果包含和。 如何在Postgres中“深度”合并两个 JSONB 值? 如果可能的话,这可能吗? 一个更复杂的测试用例: 原始“合并”并成为对象的另一个测试用例: 问题答案: 您应该合并两个值都使用的未嵌套元素。在不平凡的查询中执行此操作可能会感到不舒服,
如何更新JSONB以将新键添加到所有记录的嵌套数组(用于数组的所有项目)中。 我指的是表结构的链接: 给定的json是: 要将新元素添加到每个数组项中,请执行以下查询: 执行上述查询后输出: 但是上面只会在id=1的地方更新json。对于orders中的所有行,需要进行哪些更改才能更新与上述相同的JSON?