执行JOOQ的batchInsert抓取结果

Execute JOOQ's batchInsert fetching results

是否有任何方法可以在 JOOQ 中执行 batchInsert 以获得与在常规 insertInto().set().returning() 中一样的结果?

例如:

拥有如下实体:

data class Person(
    val id: Int,
    val name: String,
)

当运行时:(伪代码)

DSL.batchInsert(personRecords).returning(PERSON.ID, PERSON.NAME).execute()

我想获取插入记录的结果集。

所以我这里的目标是获取一批插入的插入结果行。我不介意使用不同的方法,但我真的更愿意将它们分批处理。仅供参考:我将 JOOQ 3.14 与 Postgres 数据库一起使用。

截至 jOOQ 3.16,还没有,请参阅此待处理的功能请求:https://github.com/jOOQ/jOOQ/issues/3327

但是,您可以改为批量插入记录,然后 return 生成值。由于 PostgreSQL 没有任何复杂的执行计划缓存,批量插入和批量插入之间的差异可能不会太大...?

试试这个:

ctx.insertInto(PERSON)
   .valuesOfRecords(personRecords)
   .returning(PERSON.ID, PERSON.NAME)
   .fetch();