Spring Mongo Auditing不起作用@CreatedDate @CreatedBy

时间:2020-01-08 08:06:53

标签: java spring-data-mongodb auditing

我正在使用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;
}

当我保存文档时,在 createdOn createdBy 中都为空,但在 modifiedOn modifiedBy < / strong>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果您的实体不继承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