我去了那里写的文档(http://docs.jboss.org/envers/docs/#revisionlog),如果我们使用@RevisionEntity宣布一个实体,那么Hibernate将不会自己创建默认的revinfo表,而是映射用@注释的实体。 RevisionEntity。我还尝试创建名为revinfo的默认表,而不是自定义命名表作为RevisionTable。 以下是代码:
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.envers.RevisionEntity;
import org.hibernate.envers.RevisionNumber;
import org.hibernate.envers.RevisionTimestamp;
@RevisionEntity
public class RevisionTable {
@Id
@GeneratedValue
@RevisionNumber
private int id;
@RevisionTimestamp
private long timestamp;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
}
我不明白我哪里出错了。由于我是Hibernate Envers的新手,如果详细解释解决方案,将会很有帮助。
答案 0 :(得分:3)
您的修订实体还需要包含以下注释:
@Entity
@Table(name="REVISIONS_TABLE_NAME")
它需要像其他任何实体一样通过hibernate进行扫描。请参阅文档,这是在那里指定的:http://docs.jboss.org/envers/docs/