我如何使用JOOQ记录的更新仅更新jsonb字段中嵌入的更改?

问题描述 投票:0回答:1

我已经从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个回答
0
投票

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

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

我可以想到两种方法:

  • Using client side JSON comparison mechanisms(您可能还会找到基于Java / POJO的东西,但我认为在JSON级别上会更容易)
  • 使用服务器端触发器,将您对完整JSON数据结构的更新替换为增量更新。
© www.soinside.com 2019 - 2024. All rights reserved.