Если у сущностей нет методов @PrePersist и @PreUpdate, вы можете использовать объявления типов Interpect (ITD) AspectJ для представления этих методов.
public aspect Audit {
declare parents: @Entity * implements AuditedEntity;
public interface AuditedEntity {}
@PrePersist
public void AuditedEntity.prePersistAuditing() {
... auditing logic
}
... similar code for @PreUpdate
}
Если у сущностей уже есть методы, вы можете посоветовать им выполнить аудит.