Я использую Eclipse HistoryPolicy для создания истории.Когда я пытаюсь удалить объект, у которого нет записей в таблице аудита (объект, вставленный простым SQL-запросом), я вижу SQL-запрос в журнале:
UPDATE FOO_AUDIT SET AUDIT_END = ?, DEL_USER_NAME = ? WHERE ((AUDIT_END IS NULL) AND (FOO_ID = ?))
Но FOO_AUDIT не дозируетсодержит записи для сущности FOO с этим идентификатором, поэтому я получил:
org.eclipse.persistence.exceptions.OptimisticLockException
Exception Description: One or more objects cannot be updated because it has changed or been deleted since it was last read.
Отлично работает с weblogic 10.3.5 и eclipselink-2.4.1.Может ли кто-нибудь помочь с некоторыми отзывами по этому поводу?
версия eclipselink - 2.7.3, WildFly версия 12.0.0;
После некоторой отладки я обнаружил, что это вызвано пакетным исправлением в ParameterizedSQLBatchWritingMechanism.class
try {
int rowCount = (Integer)this.databaseAccessor.basicExecuteCall(this.previousCall, null, session, false);
if (this.previousCall.hasOptimisticLock()) {
if (rowCount != 1) {
throw OptimisticLockException.batchStatementExecutionFailure();
}
}
} finally {
clear();
}
Оператор Update обновляет 0 строк, и предыдущийCall имеет оптимистическую блокировку из дескриптора класса FOO.