Пакетная запись eclipselink отключена при использовании политики истории или DescriptorEventAdapter

Я пытаюсь использовать политику истории eclipselink для записи истории изменений одной таблицы / объекта. Я также использую хуки DescriptorEventAdapter / aboutToInsert, aboutToUpdate, aboutToDelete для вставки записи аудита. Все работает хорошо, за исключением того, что я обнаружил, что опция пакетной записи не работает после применения вышеописанных функций.

<property name="eclipselink.jdbc.batch-writing" value="JDBC" />

Код похож на:

for (int i = 0; i <= 3; i++) {
    MyEntity e= new MyEntity ();
    e.setName("insert-" + i);
    entityManager.save(e);
}

Когда я отключаю history / DescriptorEventAdapter, sql выглядит так:

DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY (ID, NAME) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [1, insert-0]
DEBUG o.e.p.s./.sql -   bind => [2, insert-1] 
DEBUG o.e.p.s./.sql -   bind => [3, insert-2]
DEBUG o.e.p.s./.sql -   bind => [4, insert-3]

После применения истории / DescriptorEventAdapter

DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY (ID, NAME) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [1, insert-0]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY_HIST (ID, NAME, VALID_FROM) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [1, insert-0, 2016-06-16 01:55:22.424]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY (ID, NAME) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [2, insert-1]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY_HIST (ID, NAME, VALID_FROM) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [2, insert-1, 2016-06-16 01:55:22.424]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY (ID, NAME) VALUES (?, ?) 
DEBUG o.e.p.s./.sql -   bind => [3, insert-3]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY_HIST (ID, NAME, VALID_FROM) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [3, insert-3, 2016-06-16 01:55:22.424]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY (ID, NAME) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [4, insert-3]
DEBUG o.e.p.s./.sql - INSERT INTO MY_ENTITY_HIST (ID, NAME, VALID_FROM) VALUES (?, ?)
DEBUG o.e.p.s./.sql -   bind => [4, insert-3, 2016-06-16 01:55:22.424]

Не могли бы вы дать некоторые предположения об этом? Заранее спасибо.

 Jacky29 июн. 2016 г., 10:18
Спасибо, Крис. Я подал ошибкуbugs.eclipse.org/bugs/show_bug.cgi?id=496702, Но это кажется, никто не отвечает на это.
 Chris16 июн. 2016 г., 19:49
EclipseLink, кажется, немедленно сбрасывает вставку сущности, поэтому он может выдать вставку истории. Вам нужно будет отправить запрос об ошибке / функции в EclipseLink, чтобы он мог объединить их более эффективно, чтобы воспользоваться преимуществами пакетной записи.

Ответы на вопрос(0)

Ваш ответ на вопрос