Von einer reinen Hibernate Envers Perspektive, wenn Sie Ihre Revision Entitätsinformation zusätzlichen Kontext über eine Revision gespeichert werden sollen, wie die die Entitäten geändert oder vielleicht ein Grund für die Änderung, dann würden Sie diese durch eine tun RevisionListener
Callback kombiniert mit einer benutzerdefinierten Erweiterung zu DefaultRevisionEntity
.
Zum Beispiel:
@Entity
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevisionEntity extends DefaultRevisionEntity {
private String userName;
/* getter/setters */
}
public class CustomRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
CustomRevisionEntity cre = (CustomRevisionEntity)revisionEntity;
cre.setUserName(UserContextHolder.getUserContext().getUserName());
}
}
Envers die besondere kommentierten @RevisionEntity
Entity-Klasse erkennen und nutzen. Es wird auch die angegebene RevisionListener
Implementierung erkennen und diese Klasse instanziieren und zurückrufen, wenn eine neue Revisionsentität erstellt wird.
Leider kann ich nicht dafür sprechen, wie sich dies in Bezug auf spring-data
und spring-data-envers
Projekte nutzungsmäßig übersetzt.
Sie lassen mich nicht die Antwort bearbeiten, so ist dies, wie Sie die Metadaten mit Spring Data Envers erhalten können (yay für die Formatierung): 'Long entityId = 1L; Revision revision = enversRepository.findLastChangeRevision (entityId); CustomRevisionEntity metadata = revision.getMetadata(). GetDelegate(); ' – Aerus