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;
}
当我保存文档时,它在 createdOn 和 createdBy 中都输入了 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:PersistentEntityIsNewStrategy
和PersistableIsNewStrategy
我正在使用 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;
}
当我保存文档时,它在 createdOn 和 createdBy 中都输入了 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:PersistentEntityIsNewStrategy
和PersistableIsNewStrategy