, 당신은 엔티티 또는 아마도 변화에 대한 이유를 수정 한 사람 등의 개정에 대한 추가 컨텍스트 정보를 저장하기 위해 개정 엔티티를 원하는 경우에, 당신은을 통해이 작업을 수행 할 것 RevisionListener
콜백과 DefaultRevisionEntity
의 맞춤 확장이 결합되었습니다. 예를 들어
:
@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 특수 주석 @RevisionEntity
엔티티 클래스를 감지하고 그것을 사용합니다. 지정된 RevisionListener
구현을 감지하고 새 개정 엔터티가 생성 될 때이 클래스를 인스턴스화하고 콜백합니다.
불행히도 spring-data
및 spring-data-envers
프로젝트와 관련하여 사용법에 따라 어떻게 변환되는지는 말할 수 없습니다.
그들은 스프링 데이터 엔 버버 (예 : 형식 지정)를 사용하여 메타 데이터를 가져올 수 있도록 답변을 수정하지 않습니다 :'Long entityId = 1L; 수정 버전 = enversRepository.findLastChangeRevision (entityId); CustomRevisionEntity metadata = revision.getMetadata(). getDelegate();' – Aerus