当前位置: 首页 > 知识库问答 >
问题:

使用POJO仅更新JOOQ记录中更改的字段

弓方伟
2023-03-14

我想使用POJO作为源来更新JOOQ记录中更改的字段<代码>记录。from(Object)几乎正确,但根据文档

结果记录的所有值的内部“更改”标志都将设置为true。

我只希望实际更改的字段(由对象决定。等于(对象,对象))更新其标志。

这有两个原因:

  • 我不想触发插入

共有1个答案

顾梓
2023-03-14

执行此操作的原因。。。

生成的记录将其内部“更改”标志设置为所有值的true。

...很简单:如果事情不是这样实现的,就没有办法强制更新未更改的值。在一些用例中,这是可取的(例如批处理、避免太多不同的SQL字符串等)。Record.from()方法与其他记录方法一致,例如Record.set(Field, Object)

您可以修补内部更改的标志,如下所示:

// Load all values and mark them all as "changed"
record.from(object);

// Undo the undesired flags
for (int i = 0; i < record.size(); i++)
    if (Objects.equals(record.get(i), record.original(i)))
        record.changed(i, false);

我还在jOOQ中创建了一个特性请求。也许API可以改进,因为很多人都有这样的要求:https://github.com/jOOQ/jOOQ/issues/5394

 类似资料:
  • 我试图执行一个简单的更新记录函数,但它给我一个错误,我找不到原因或任何其他人有它。 可以在以下位置找到示例测试项目:https://github.com/billbarni/jooq-studer-h2-test Java代码: 数据库创建表达式: 梯度发生器配置: Java在编译之前给了我这个错误: 在DSLContext中执行更新(R) 这个问题背后的原因是什么?我做错了什么? 观察。:我有2

  • 创建一个在PHP服务器端无法理解的小管理员行更新程序。我希望sql查询只更新页面上已更改的$u POST字段,这样它就不会循环所有100条左右的记录。 我的做法如下: 1) jQuery侦听已更改的输入字段,然后为已更新的用户字段分配名称属性 2) PHP检测已设置更新的用户字段。 3) 在提交重新加载时,PHP检测到该输入,并按行ID更新SQL。如何确保PHP知道哪个输入字段指向哪个行ID? j

  • 更新记录 V2.0.0 加入寄存器运行模式,可大幅提升热更内数值计算性能 执行性能整体提升,传统非寄存器模式执行效率也得到一定幅度提升 修正热更内finnaly块在一些情况下不正确的bug,连带修复了yield return和async/await的一些异常情况 修正值对类型绑定后的数组进行操作时的异常 修正热更内Enum一些情况下Equals结果错误的bug 修正跨域继承接口时的一些异常情况 修

  •  版本更新记录 2016.09.10 1) 底层组件-新增时间处理集合 2016.09.5 1) 底层组件-优化防刷 2) 底层组件-错误监控 2) 底层组件-优化通过类名绑定相关事件 2016.08.25 1) 底层组件-新增百度统计组件 2016.08.11 1) 底层组件-优化udb定制登录,增加QQ登录 2) 活动组件-新增完成任务组件 2016.08.9 1) 活动组件-新增防刷组件

  • 我一直在尝试改装,我真的很简单。 然而,我有一个奥化的担忧。我正在为我的后端使用Parse,它有一个纯restapi。 当我想要更新一个对象时,我使用一个,并只在

  • 在我的Java项目中,我是usinq、JOOQ,我希望更新JSONB值。但我的建造失败了。 我写了一段代码: 我收到了下一条信息: 我犯错的地方?