Начиная с jOOQ 3.11, невозможно обойти настройку версии записи или метки времени с помощью функции «из коробки». Я создал запрос функции для реализации этого в jOOQ 3.12: https://github.com/jOOQ/jOOQ/issues/8924
Существует несколько обходных путей, все из которых предполагают, что вы уже отключили Settings.executeWithOptimisticLocking
в логике копирования данных
Обходной путь: Использование RecordListener
Если вы используете версии записи (не отметки времени), вы можете установить версию записи на version - 1
до сохранения своей записи. Это привело бы к обновлению версии до того же значения. Взломать, но может быть достаточно хорошо.
Обходной путь: для этой цели заново сгенерируйте таблицы
Вы можете повторно сгенерировать все таблицы, участвующие в этой операции, во второй раз без версий / временных меток записей, и использовать эти альтернативные сгенерированные таблицы для копирования данных.
Обходной путь: не использовать UpdatableRecord
Вместо использования UpdatableRecord
вы можете написать действительные INSERT
операторы. Обратите внимание, что вы можете передать любой Record
в оператор INSERT
с помощью метода InsertSetStep.set(Record)
. Это будет иметь тот же эффект, что и вызов record.insert()
, то есть будут вставлены только измененные поля.