当我需要每个元素的生成密钥时,通过jooq插入多个数据的一般方法是什么?
通常我会使用批量插入,由于this,目前无法进行批量插入。
我可以使用create.newRecord(...)并分别插入每个元素。之后,ID设置正确,但这种方法性能不佳。
我希望有人有更好的方法,我不能成为唯一需要此功能的人...
提前多多谢谢,
tohoe
答案 0 :(得分:1)
正如您自己发现的那样,jOOQ 3.4.2目前在问题#3327中记录了DSLContext.batchStore()
之后提取ID的限制。
可能运行良好的解决方法是创建包含所有记录的大INSERT .. RETURNING
语句,例如:
DSL.using(configuration)
.insertInto(TABLE)
.set(record1)
.newRecord()
.set(record2)
.newRecord()
...
.returning()
.fetch();
当然,这只是一种解决方法,甚至可能不如批处理那样好,因为声明可能会变得非常大。