Hibernate Envers получает ревизию сразу после сохранения данных - PullRequest
0 голосов
/ 09 октября 2018

Я использую Spring JPA для сохранения данных в моем приложении.Я также использую Hibernate Envers для создания истории каждой записи, которую я ввожу в свою основную таблицу.Я хотел бы получить ревизию сразу после транзакции write и показать пользователю, какая ревизия была создана для внесенных им изменений.

Другими словами:

Шаг 1: entity -- persisted --> entity table -- envers --> audit table

Шаг 2: return me the audit version just created

Сначала я применил метод сохранения данныхи затем извлеките самую последнюю версию из таблицы аудита в отдельном вызове .Это в конечном итоге будет несовместимо с увеличением количества пользователей.

MyEntity mySavedEntity = myEntityRepository.save(myEntity);         
AuditReader reader = AuditReaderFactory.get(entityManager);
List<Number> revisions = reader.getRevisions(MyEntity .class, mySavedEntity.getId());

// ... get the latest revision and pass it back to the user ...

Как мне решить эту проблему?- Спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Может быть, вы можете использовать ValidityAuditStrategy, вы можете проверить его здесь , это позволит вам узнать вашу последнюю действительную запись и в этом случае получить последнюю ревизию.

0 голосов
/ 10 октября 2018

Вы можете сделать так, чтобы Envers регистрировал столбец версии ваших сущностей, установив org.hibernate.envers.do_not_audit_optimistic_locking_field в false

Затем используйте этот столбец и значение атрибута версии сущности послетранзакция для получения ревизии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...