【问题标题】:How do I create custom field to store user credentials in REVINFO table如何创建自定义字段以在 REVINFO 表中存储用户凭据
【发布时间】:2015-05-12 07:17:44
【问题描述】:

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

我需要将用户添加为 REVINFO 表中的字段。如何在 REVINFO 表中添加“用户”字段?

【问题讨论】:

    标签: java hibernate hibernate-envers


    【解决方案1】:

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

    【讨论】:

    • 感谢@Suken shah 的回复!!!此代码将生成新表或在 REVINFO 表中添加用户字段?
    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2012-10-26
    • 2010-11-30
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多