Аудит JPA и сбор автоматически сгенерированных идентификаторов

Я ищу подходящее решение для захвата автоматически сгенерированного идентификатора после вставки БД с использованием AuditInterceptor (который расширяет org.hibernate.EmptyInterceptor).

Это работает следующим образом: когда выполняется вызов EntityManager.persist(entity);, метод onSave Interceptor вызывается до вызова сохраняется новая сущность. Объект entity доступен для Interceptor, но у него еще нет значения автоматически сгенерированного идентификатора, поэтому в итоге мы регистрируем пустое значение.

После завершения транзакции вызывается метод afterTransactionCompletion(org.hibernate.Transaction tx) объекта Interceptor. Мой подход состоял в том, чтобы добавить логику к этому методу, чтобы вернуться к базе данных и найти последний вставленный автоматически сгенерированный идентификатор, что нежелательно. Есть ли более традиционный способ получить автоматически сгенерированный идентификатор для Interceptor?


person VilleLipponen    schedule 07.05.2021    source источник
comment
Не очень обычно, но как это для дубликата?   -  person Kayaman    schedule 07.05.2021
comment
Почему бы просто не использовать прослушиватель @PostPersist?   -  person crizzis    schedule 08.05.2021