2015-04-23 131 views
2

我想扩展我的修订表。按照手册我创建的自定义修改实体:休眠envers自定义修订实体

package com.terminal.audit; 

import org.hibernate.envers.DefaultRevisionEntity; 
import org.hibernate.envers.RevisionEntity; 
import org.hibernate.envers.RevisionNumber; 
import org.hibernate.envers.RevisionTimestamp; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Transient; 
import java.util.Date; 

@Entity 
@RevisionEntity(CustomRevisionListener.class) 
public class CustomRevisionEntity extends DefaultRevisionEntity { 

    @Id 
    @GeneratedValue 
    @RevisionNumber 
    private int id; 

    @RevisionTimestamp 
    private long timestamp; 

    private String username; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    @Transient 
    public Date getRevisionDate() { 
     return new Date(timestamp); 
    } 

    public long getTimestamp() { 
     return timestamp; 
    } 

    public void setTimestamp(long timestamp) { 
     this.timestamp = timestamp; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 
} 

和定制修改监听器:

package com.terminal.audit; 

import org.hibernate.envers.RevisionListener; 

public class CustomRevisionListener implements RevisionListener { 

    public void newRevision(Object revisionEntity) { 
     CustomRevisionEntity revision = (CustomRevisionEntity) revisionEntity; 
     revision.setUsername("username"); //for testing 
    } 

} 

我休眠envers版本如下:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-envers</artifactId> 
    <version>3.6.10.Final</version> 
</dependency> 

问题是我的修订实体没有被使用。任何可能出错的建议?

+0

请从hibernate.cfg.xml中 – gstackoverflow

+0

可能的复制提供休眠envers配置[创建Envers定制版本实体(http://stackoverflow.com/questions/8242478/creating-envers -custom-修订实体) –

回答

1

问题在于自定义实体未映射到我的休眠配置中。

<mapping class="com.terminal.audit.CustomRevisionEntity"/> 

解决)