我们使用hibernate-envers并拥有存储实体历史状态的*_AUD表。还有一个全局REVINFO表,其中包含修订号、时间戳。
我需要在REVINFO表中添加用户作为字段。如何在REVINFO表中添加"user“字段?
发布于 2015-05-12 07:59:35
您肯定可以创建自定义的RevisionInfo实体。自定义修订实体必须具有带{@link RevisionNumber}注释的整数值唯一属性(最好是主id)和带有{@link RevisionTimestamp}注释的长值属性。
{@link DefaultRevisionEntity}已经有了这两个字段,所以您可以扩展它,但也可以从头开始编写自己的修订实体。因此,在您的示例中,修订实体可能如下所示:
@Entity
@RevisionEntity()
public class RevisionsInfo extends DefaultRevisionEntity {
private Long userId;
public Long getUserId() { return userId; }
public void setUserId(final Long uid) { this.userId = uid; }
}除此之外,您还可以为其他任何特殊需求提供自定义RevisionListener。见以下示例:
public class RevisionListener implements org.hibernate.envers.RevisionListener
{
/**
* {@inheritDoc}
*/
public void newRevision(final Object revisionInfo)
{
// updateInfo your info here if required
}
}可以提供自定义RevisionListener作为RevisionEntity注释的参数。
@RevisionEntity(RevisionListener.class)https://stackoverflow.com/questions/30184227
复制相似问题