Я ищу подходящее решение для захвата автоматически сгенерированного идентификатора после вставки БД с использованием AuditInterceptor (который расширяет org.hibernate.EmptyInterceptor).
Это работает следующим образом: когда выполняется вызов EntityManager.persist(entity);, метод onSave Interceptor вызывается до вызова сохраняется новая сущность. Объект entity доступен для Interceptor, но у него еще нет значения автоматически сгенерированного идентификатора, поэтому в итоге мы регистрируем пустое значение.
После завершения транзакции вызывается метод afterTransactionCompletion(org.hibernate.Transaction tx) объекта Interceptor. Мой подход состоял в том, чтобы добавить логику к этому методу, чтобы вернуться к базе данных и найти последний вставленный автоматически сгенерированный идентификатор, что нежелательно. Есть ли более традиционный способ получить автоматически сгенерированный идентификатор для Interceptor?
@PostPersist
? - person crizzis   schedule 08.05.2021