我正在使用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>
感谢您的帮助
答案 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
接口,则应实施逻辑以检测之前从未持久过的实体。
有关更多信息,您可以检查两个类:PersistentEntityIsNewStrategy
和PersistableIsNewStrategy