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-data
和 spring-data-envers
项目的用法。
我已经标记了我的实体 @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-data
和 spring-data-envers
项目的用法。