2016-06-18 10 views
0

Ich habe meine Einheit @Audited markiert und ich kann sehen, dass es die Revisionsnummer und Zeitstempel protokolliert einer neuen Revision, aber wie kann ich benutzerdefinierte Metadaten hinzufügen? Ich glaube, dass es möglich sein muss, da org.springframework.data.RevisionMetadata die getDelegate() Methode mit dem folgenden Javadoc hat:Spring Data Envers benutzerdefinierte Metadaten

Gibt die zugrunde liegenden Revision von Metadaten die möglicherweise Anbieter detailliertere Implementierung spezifische Informationen.

Antwort

1

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.

+0

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

Verwandte Themen