我想使用POJO作为源更新JOOQ记录中的已更改字段。 Record.from(Object)
几乎是正确的,但根据文档
结果记录将为所有值将其内部“已更改”标志设置为true。
我只希望实际更改的字段(如Objects.equals(Object, Object)
所确定)更新其标记。
这样做的两个原因是:
答案 0 :(得分:3)
实施的原因......
结果记录的内部"已更改"对于所有值,flags设置为true。
......很简单:如果事情没有以这种方式实施,就没有办法强制更新没有改变的价值。有一些用例需要这样做(例如批处理,避免使用太多不同的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