如何使用 Spring 数据 MongoDB 插入新日期?

How can I do a insert a new Date with Spring Data MongoDB?

如何使用 Spring 数据 MongoDB 插入新日期?

我目前正在求助

User = new User();
user.setCreationDate(new Date());
mongoOperation.save(user);

解决了问题,但最终结果是用户保存的是服务器的当前时间运行ning代码,而不是服务器的当前时间运行宁数据库。

由于此代码将 运行 在多个服务器上并行执行,并且服务器的时间可能略有不同,因此我想复制与执行 [=] 时完全相同的行为14=]

db.users.insert({'creationDate': new ISODate()}) 

直接在 mongo shell.

如何使用 Sprint-Data-MongoDB 实现这一点?

您可以通过使用 spring- 数据审核功能

始终如一地实现这一目标

为了启用审核,我们需要将 < mongo:auditing/ > 标记添加到 Spring 配置。

审核让您以声明的方式告诉 Spring 存储:

  • 文档创建日期:@CreatedDate
  • 文档上次更新日期:@LastModifiedDate
  • 创建文档的用户:@CreatedBy
  • 最近更新的用户:@LastModifiedBy
  • 当前文档版本:@Version

对于我们的用例,如果我们结合 javax.persistence jar 日期样式和 mongodb 审计,我们总是通过使用以下声明获得新的 ISODate()

@Temporal(TemporalType.TIMESTAMP) 
@DateTimeFormat(style = "M-") 
@CreatedDate
private Date createdDate; 

这样您就可以使用 spring-data-mongodb

创建新的日期
@Column(updatable = false)
    @CreationTimestamp
    private LocalDateTime createdAt;

我们提供@CreatedDate 来捕获创建实体的用户,并提供@LastModifiedDate 来捕获更改发生的时间。

Spring 数据 JPA 文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#auditing.annotations