【问题标题】:Spring Data Envers custom metadataSpring Data Envers 自定义元数据
【发布时间】:2016-10-20 10:54:14
【问题描述】:

我已经标记了我的实体@Audited,我可以看到它记录了新修订的修订号时间戳,但是如何添加自定义元数据?我相信这一定是可能的,因为org.springframework.data.RevisionMetadata 具有带有以下Javadoc 的getDelegate() 方法:

返回可能提供更详细的实现特定信息的底层修订元数据。

【问题讨论】:

    标签: spring-data hibernate-envers


    【解决方案1】:

    从纯 Hibernate Envers 的角度来看,如果您希望您的修订实体存储有关修订的附加上下文信息,例如谁修改了实体或更改的原因,那么您可能希望通过 RevisionListener 来执行此操作回调与 DefaultRevisionEntity 的自定义扩展相结合。

    例如:

    @Entity
    @RevisionEntity(CustomRevisionListener.class)
    public class CustomRevisionEntity extends DefaultRevisionEntity {
      private String userName;
      /* getter/setters */
    }
    
    public class CustomRevisionListener implements RevisionListener {
      @Override
      public void newRevision(Object revisionEntity) {
         CustomRevisionEntity cre = (CustomRevisionEntity)revisionEntity;
         cre.setUserName( UserContextHolder.getUserContext().getUserName() );
      }
    }
    

    Envers 将检测到带有特殊注释的@RevisionEntity 实体类并使用它。它还将检测指定的RevisionListener 实现,并在构造新的修订实体时实例化并回调该类。

    不幸的是,我无法说明这对于spring-dataspring-data-envers 项目的使用意义如何。

    【讨论】:

    • 他们不让我编辑答案,所以这就是您可以使用 Spring Data Envers 获取元数据的方法(格式是好的):Long entityId = 1L; Revision revision = enversRepository.findLastChangeRevision(entityId); CustomRevisionEntity metadata = revision.getMetadata().getDelegate();
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2017-11-10
    • 2020-04-12
    • 2018-02-01
    • 2017-03-22
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多