Spring Mongo审计无法正常工作@CreatedDate @CreatedBy

问题描述 投票:0回答:1

我正在使用Spring Mongo Auditing,并且@CreatedDate @CreatedBy无法正常工作,但是@LastModifiedDate和@LastModifiedBy可以正常工作。

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

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

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

审计班是:

@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中都为空,但在modifiedOnmodifiedBy中都正确的值

感谢您的帮助

java spring-data-mongodb auditing
1个回答
0
投票

如果您的实体不继承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接口,则应实施逻辑以检测之前从未持久过的实体。

有关更多信息,您可以检查两个类别:PersistentEntityIsNewStrategyPersistableIsNewStrategy

© www.soinside.com 2019 - 2024. All rights reserved.