当前位置: 首页 > 知识库问答 >
问题:

Spring Mongo审核不起作用@CreatedDate@CreatedBy

查修谨
2023-03-14

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

我在配置类上添加了@EnableMongoAudting,并定义了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中都设置为null,但在modifiedOn和modifiedBy中都设置了正确的值

谢谢你的帮助

共有1个答案

沃盛
2023-03-14

如果您的实体没有继承持久接口,您应该定义一个字段,由@Version(org.springframework.data.annotation.版本)标记。

@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;
}

另一方面,如果您的实体继承是可持久的,那么您应该实现逻辑继承来检测以前从未持久化过的实体。

有关详细信息,您可以检查两个类:PeristentEntityIsNewStrategyPeristableIsNewStrategy

 类似资料:
  • 我有一个简单的实体,我想让“createdDate”自动分配。 同样在文档中描述的,我还在CassandraConfig中添加了注释“@EnableCassandra Auditing”: 但它仍然不起作用。实体是用createdDate=null创建的。感谢您的帮助。

  • 在一个Spring Boot项目中,我使用像@CreatedDate这样的注释来保存关于相应文档创建/更新日期的信息。ZonedDateTime在整个项目中使用,因此带注释的字段也是ZonedDateTime。为了实现Mongo的日期格式和ZonedDateTime之间的转换,使用了自定义转换器。 现在,当使用Spring Boot 1.5.x时,自定义转换器可以完美地用于可审计字段。在Sprin

  • 接口说明 审核用户的注册申请 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/check 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 guid string form 是 用户ID status int form 是 用户状态[0:未审核;1:已审核] 响应字段说明 无 响应

  • 如果配置了邮箱,用户提交审核之后会给管理员发送邮件,邮件里带有审核地址。 或者您也可以在应用列表里找到未审核的应用进入。 审核应用 提交的基础信息 生成的kubernetes yaml 代码库中的Dockerfile文件 驳回 如果管理员觉得提交的有问题,可以进行驳回,驳回填定理由会发送至提交者的邮箱。 若没有啥问题,可以点击“开始部署”按钮。 开始部署之后应用会自动在jenkins上创建一个jo

  • 我正在构建一个Spring启动应用程序。我对这项技术还很陌生。我已经看到了许多关于如何启用审计的示例。我似乎已经遵循了所需的配置和设置。但是在标记lastModifiedBy的“更新”操作期间,审计不起作用 以下是我在项目中的代码。 实体-我ssue.java 一个uditable.java 审核配置。JAVA AuditAwareImpl。JAVA IssueController。JAVA 发行