如何创建自定义字段以在REVINFO表中存储用户凭据

时间:2015-05-12 07:17:45

标签: java hibernate hibernate-envers

我们正在使用hibernate-envers并使用* _AUD表来存储实体的历史状态。还有一个全局REVINFO表,其中包含修订号,时间戳。

我需要在REVINFO表中添加用户字段。如何添加"用户" REVINFO表中的字段?

1 个答案:

答案 0 :(得分:2)

您绝对可以创建自定义的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)