JOOQ:通过记录更新时如何添加返回子句

JOOQ: How to add a returning clause when updating through record

我目前正在更新 table,方法是:

fun <T: MyRecordInterface<*>> updateRecord(record: T) {
   record.setField1("field1")
   record.setField2("field2")

   record.update()
}

允许更新共享同一接口的不同类型的记录:

updateRecord(myRecord1Instance)
updateRecord(myRecord2Instance)

我想return更新后的完整更新记录,所以我做了:

fun <T: MyRecordInterface<*>> updateRecord(record: T): T {
   record.setField1("field1")
   record.setField2("field2")

   record.update()
   record.refresh()

   return record
}

是否可以将 returning 子句添加到更新查询中,这样我就不必在此方法中发出 2 个查询?

您可以全局启用 Settings.returnAllOnUpdatableRecord,这将在每个 store()insert() 自动为您获取所有结果值(身份、触发器生成的值等) ,update()来电.

这是全局应用的,会产生一些开销,特别是如果您不想要这些结果值,因此仅在此处使用带有上述 Settings 的新 Configuration 才有意义真的很需要