Spring Mongo 审计不工作 @CreatedDate @CreatedBy

Spring Mongo Auditing not working @CreatedDate @CreatedBy

我正在使用 Spring Mongo 审计和 @CreatedDate @CreatedBy 不工​​作但 @LastModifiedDate 和 @LastModifiedBy 工作正常。

我在配置上添加了 @EnableMongoAuditing class 并且还定义了 AuditAware。

@Component("securityAuditorAware")
public class SecurityAuditorAware implements AuditorAware<String> {

 @Override
 public Optional<String> getCurrentAuditor() {
  return Optional.ofNullable(SecurityUtils.getUserPrincipal()).map(AuthenticatedUser::getIssuer);
 } 
}

审计 class 是:

@Document
public class Template  {

 @Id
 private UUID id = UUID.randomUUID();

 @CreatedDate
 private Date createdOn;
 @LastModifiedDate
 private Date modifiedOn;
 @CreatedBy
 private String createdBy;
 @LastModifiedBy
 private String modifiedBy;
}

当我保存文档时,它在 createdOncreatedBy 中都输入了 null,但在 modifiedOn 中输入了正确的值modifiedBy

感谢帮助

如果你的Entity没有继承Persistable接口,你应该定义一个字段,用@Version标记(org.springframework.data.annotation.Version)。

@Document
public class Template {

 @Id
 private UUID id = UUID.randomUUID();

 @CreatedDate
 private Date createdOn;
 @LastModifiedDate
 private Date modifiedOn;
 @CreatedBy
 private String createdBy;
 @LastModifiedBy
 private String modifiedBy;
 @Version
 private Integer version;
}

另一方面,如果你的实体继承了Persistable接口,你应该实现逻辑来检测以前从未被持久化的实体。

更多信息,您可以查看两个class:PersistentEntityIsNewStrategyPersistableIsNewStrategy