加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:06:00 所属栏目:Java 来源:网络整理
导读:我想使用POJO作为源更新JOOQ记录中的已更改字段. Record.from(Object) 几乎是正确的,但根据文档 The resulting record will have its internal changed flags set to true for all values. 我只希望实际更改的字段(如 Objects.equals(Object,Object) 所确定)

我想使用POJO作为源更新JOOQ记录中的已更改字段. Record.from(Object)几乎是正确的,但根据文档

The resulting record will have its internal “changed” flags set to true for all values.

我只希望实际更改的字段(如Objects.equals(Object,Object)所确定)更新其标志.

这样做的两个原因是:

>我不想触发插入
>我只想在更新语句中向数据库发送新值(带宽,并发更新等)

最佳答案
这个实施的原因……

The resulting record will have its internal “changed” flags set to true for all values.

…很简单:如果事情没有以这种方式实现,就没有办法强制更新未更改的值.有一些用例需要这样做(例如批处理,避免使用太多不同的SQL字符串等). Record.from()方法与其他Record方法一致,例如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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读