当我尝试进行批量删除时,没有任何反应。我进入调试器,看到BatchCRUD :: executeAction调用UpdatableRecord :: delete,然后在调用堆栈中,UpdateatableRecordImpl :: checkIfChanged调用fetchOne(),它抛出一个QueryCollectorSignal。执行的sql在PGAdmin(postgres)中运行正常,所以我想知道这里发生了什么?如何进行正确的批量删除?
答案 0 :(得分:1)
batchStore()
,batchDelete()
和类似的调用对每个store()
执行相应的delete()
,UpdatableRecord
等来电,但ExecuteListener
中止执行(通过此QueryCollectorSignal
异常)并只收集本已执行的SQL查询。然后它会批处理这些SQL查询,而不是单独执行它们。遗憾的是,ExecuteListener也应用于乐观锁定所需的SELECT查询。
最安全的解决方案可能是在我们提供修复之前关闭乐观锁定。我已为此注册了一个问题: https://github.com/jOOQ/jOOQ/issues/5383