【问题标题】:How can I use JOOQ record's update to update only the embedded changes in a jsonb field?如何使用 JOOQ 记录的更新仅更新 jsonb 字段中的嵌入更改?
【发布时间】:2020-06-06 14:44:26
【问题描述】:

我已经从 JSONB 绑定到我的 POJO (https://www.jooq.org/doc/latest/manual/code-generation/custom-data-type-bindings/)

而且,我已经看到了 JOOQ 的 #5394 问题 (https://github.com/jOOQ/jOOQ/issues/5394) 和临时解决方案。

现在我正在尝试了解如何检测 POJO 中的更改并让 JOOQ 仅使用 jsonb_set 更新这些更改

【问题讨论】:

    标签: java postgresql kotlin jooq jsonb


    【解决方案1】:

    您链接的issue #5394 与您的请求并不严格相关。 #5394 是关于普通的、标准化的 UpdatableRecord 实例,其中某些值不应自动考虑插入或更新。

    在您的情况下,您正在使用 JSON 形式的嵌套数据结构。对于 jOOQ,JSON 列是不透明的,并且没有任何嵌套结构的概念。如果你想引入这个功能,你必须完全自己做。但是,您目前无法通过 UpdatableRecordrecord.store() 调用来执行此操作(jOOQ 3.13)。您必须编写自己的 API,将此类记录更改转换为插入或更新语句。

    我可以想到两种方法来做到这一点:

    • Using client side JSON comparison mechanisms(你可能会发现一些基于 Java / POJO 的东西,但我认为在 JSON 级别上会更容易)
    • 使用服务器端触发器,它将您对完整 JSON 数据结构的更新替换为增量更新。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 2022-01-17
      • 2021-12-31
      • 1970-01-01
      • 2015-03-07
      • 2015-10-06
      • 2021-02-12
      • 2019-06-24
      • 1970-01-01
      相关资源
      最近更新 更多