Spring Data Envers 自定义元数据

Spring Data Envers custom metadata

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

Returns the underlying revision metadata which might provider more detailed implementation specific information.

从纯 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 实体-class 并使用它。它还将检测指定的 RevisionListener 实现,并在构造新的修订实体时实例化并回调此 class。

不幸的是,我无法说明这如何转化为 spring-dataspring-data-envers 项目的用法。