2016-06-18 6 views
0

나는 나의 실체 @Audited을 표시하고 나는 그것이 개정 번호와 새로운 버전의 타임 스탬프를 기록 것을 볼 수 있지만, 어떻게 사용자 정의 메타 데이터를 추가 할 수 있습니까? 나는 org.springframework.data.RevisionMetadata 다음과 같은 자바 독으로 getDelegate() 방법이 있기 때문에 그것이 가능해야 생각 :봄 데이터 Envers 사용자 정의 메타 데이터

가 제공 자세한 구현 고유의 정보 수있는 기본 버전 메타 데이터를 돌려줍니다. 순수한 최대 절전 모드 Envers 관점에서

답변

1

, 당신은 엔티티 또는 아마도 변화에 대한 이유를 수정 한 사람 등의 개정에 대한 추가 컨텍스트 정보를 저장하기 위해 개정 엔티티를 원하는 경우에, 당신은을 통해이 작업을 수행 할 것 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-dataspring-data-envers 프로젝트와 관련하여 사용법에 따라 어떻게 변환되는지는 말할 수 없습니다.

+0

그들은 스프링 데이터 엔 버버 (예 : 형식 지정)를 사용하여 메타 데이터를 가져올 수 있도록 답변을 수정하지 않습니다 :'Long entityId = 1L; 수정 버전 = enversRepository.findLastChangeRevision (entityId); CustomRevisionEntity metadata = revision.getMetadata(). getDelegate();' – Aerus