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

时间:2015-11-12 19:16:05

标签: java spring mongodb spring-data spring-data-mongodb

如何在Spring Data MongoDB中插入新日期?

我目前正在诉诸

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

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

由于此代码将并行运行在多个服务器上的多个实例中,并且服务器的时间可能略有不同,因此我希望复制与执行此操作时完全相同的行为

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

直接在mongo shell中。

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

1 个答案:

答案 0 :(得分:2)

通过使用弹簧数据审核功能

,您可以始终如一地实现这一目标

为了启用审核,我们需要添加< mongo:审核/> 标记为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

创建新日期