mar*_*den 2 java mongodb spring-data-mongodb spring-boot
我有一个使用 MongoDB 作为数据库的 Spring Boot 2 项目。
当我通过调用 LocalDateTime.now() 将包含日期的对象实例化为 LocalDateTime 时;我收到一个包含纳秒且超过 4 位数字的日期时间。
当我使用 mongotemplate.save 将这些数据保存在 mongoDB 中时,保存的值仅包含纳秒的 3 个位置(其余部分用零填充)。那么,如何在存储到数据库时达到相同的精度呢?或者另一种选择:在java中创建LocalDateTime实例时如何限制精度?
@Document("Entity")
public class Entity implements Serializable {
@Id
private String id;
@Indexed(name = "created")
private LocalDateTime created;
public HistoryEntity(){
// This gives me 2020-01-30T13:25:09.817182
this.created = LocalDateTime.now();
}
}
Run Code Online (Sandbox Code Playgroud)
@Repository
public class DAO {
@Autowired
private MongoTemplate mongoTemplate;
public void save(Entity e) {
// When value is persisted, I get 2020-01-30T13:25:09.817 if I look into mongoDB instance or if I retrieve the same entity from DB in Java
Entity saved = mongoTemplate.save(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我想我找到了答案,除了从java端截断我的 LocalDateTime 之外,我可能没有什么可以做的(正如我在上一条评论中所解释的并在下面描述的那样)
Clock millisecondClock = Clock.tick(Clock.systemDefaultZone(), Duration.ofNanos(1000000));
LocalDateTime d = LocalDateTime.now(millisecondClock);
Run Code Online (Sandbox Code Playgroud)
当我遇到以下声明(回答了我的问题)时,我正在阅读 Baeldung 的文章https://www.baeldung.com/spring-data-mongodb-zoneddatetime :
...我们正在删除纳秒信息,因为 MongoDB Date 类型的精度为毫秒:
就是这样了。即使我想以更高的精度工作,似乎 MongoDB 无法处理它(至少现在是这样)
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |