Альтернатива устаревшему методу AuditReader # getCurrentRevision - PullRequest
1 голос
/ 20 января 2020

Я переносю приложение java из Spring Boot 1.5 в Spring Boot 2.2.3, и это включает обновление Hibernate / Envers до 5.4.10.Final.

Существующий код вызывает AuditReader # getCurrentRevision (Class revisionEntityClass, boolean persist), который устарел, и JavaDocs заявляет, что использует RevisionListener, но это не делает то же самое, что нам нужно для извлечения ревизии, которую будет создано , созданной при фиксации существующей транзакции. Метод getCurrentRevision дал нам эту функциональность, но RevisionListener не вызывается до тех пор, пока нашему коду не понадобится номер ревизии, а также для revisionEntity, переданного RevisionListener. У метода newRevision еще не установлен идентификатор. RevisionListener, похоже, больше ориентирован на установку дополнительной информации о сущности ревизии, а не на получение информации из нее.

Как я могу получить ревизию, которая будет создана как часть текущей транзакции?

Спасибо

1 Ответ

0 голосов
/ 21 января 2020

Чтобы добавить некоторый контекст ... нам нужно было сохранить текущую ревизию в объекте, представляющем событие, чтобы можно было воспроизвести событие в конце дня и получить доступ к состоянию учетной записи, как это было во время события .

В нашей предыдущей (Spring Boot 1.5) версии приложения мы не проводили аудит сущностей событий, потому что в этом не было необходимости.

Чтобы обойти функциональность, которая устарела и поэтому помечена для Удаление мы просто начали аудит объекта события. Таким образом, мы можем получить доступ к ревизии вставки сущности события во время, когда мы обрабатываем событие, а не когда мы его вставляем, и это дает нам ревизию состояния учетной записи во время возникновения события.

Не ответ как таковой на мой первоначальный вопрос, а чистое решение функциональных требований.

...