2016-07-08 5 views
3

내가 작업하고있는 프로젝트에서 Hibernate Envers를 구현하고 있으며,이 클라이언트의 경우 데이터베이스의 테이블과 컬럼은 특정 이름 패턴을 따라야한다. 이름 패턴은 테이블 이름을 사용하여 열 이름의 일부를 생성하고 수정본을 저장하는 테이블은 원본 테이블과 다른 이름을 가지므로 생성 된 테이블의 열 이름을 변경할 수 있어야합니다. Envers.HibernateEnvers 커스텀 컬럼 이름

엔티티의 오디션 테이블의 열 이름을 변경하려면 어떻게해야합니까? 내가 최대 절전 모드 사용하고

  • 4.3.11을-FINAL
  • 나는 아무 문제
+0

Alexandru이 올바른지를, 현재 열 이름을 사용자 정의 할 수있는 방법이 없습니다 사용 된 이름이 논리 원본 테이블에서 읽은 메타 데이터로 구워지기 때문입니다. 새로운 JIRA 문제 https://hibernate.atlassian.net/browse/HHH-10941을 추가했습니다. 이것이 실제 사용을위한 것이라면 투표를 추가하십시오. – Naros

+0

Thanks @ Naros, just vote =) –

+0

hibernate가 "@Audit"주석에 "@AuditColumn"또는 매개 변수 "columName"과 같은 것이있을 것으로 기대했던 속성에 @Column annotation을 지원하기 때문에 –

답변

3

내가하지 리비전 테이블 (REVINFO) 이름과 컬럼도 기업의 오디션 테이블 이름을 chaning 없었다 Envers가 (열의 이름을 변경하는)이 기능을 제공한다고 생각합니다. 잘못된 것입니다. 내가 생각할 수있는

두 가지 옵션은 다음과 같습니다

  • 이 Envers 코드에 깊은 가서, 내가 열 식별 부분
  • 생각하고 당신이 데이터를 감사로 작성하는 방법을 사용자 정의 할 수있는 방법을 참조하려고 사용할 수있는 방법에 대한 예를 들어 이동 감사의 작동 방식을 변경
-1

REVINFO는 기본 RevisionListener의 기본 테이블 트리거

RevisionListener 및 사용자 정의 revsionEntity를 구현하는 사용자 정의 버전 Listener를 만들어야합니다.

사용자 정의 엔티티 리스너 :

public class CustomRevisionEntityListener implements RevisionListener { 

@Override 
public void newRevision(Object revisionEntity) { 
    CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity; 
    revision.setIPAddress("UserIPAddress"); 
} 
} 

그리고 사용자 지정 엔터티, 당신은 모든 테이블 이름 및 필드를 사용할 수 있습니다

@Entity 
@Table(name="anyTableName") 
@RevisionEntity(CustomRevisionEntityListener.class) 
@Setter 
@Getter 
@EqualsAndHashCode 
public class CustomRevisionEntity implements Serializable { 

    @Id 
    @GeneratedValue 
    @RevisionNumber 
    @Column(name = "rev") 
    private int id; 

    @RevisionTimestamp 
    @Column(name = "revtstmp") 
    private long timestamp; 


    @Column(name = "ipAddress") 
    private String IPAddress ; 

} 
+0

안녕하세요 @Vivek, 당신의 대답은 REVINFO 테이블을 변경하는 문제를 해결하지만 그건 내가 무엇을 찾고 있었는지 아닙니다 ... REVINFO 테이블은 "오디션 테이블"이 아니며 단지 수정 정보를 저장합니다 –