执行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();
是否有任何方法可以在 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();