我有Java 8日期/时间字段的简单文档

@Document

public class Token {

private Instant createdAt;

...

}

我希望坚持使用Spring Data MongoDB 1.5版.但java.time.Instant类型的字段无法正确反序列化,因为MappingMongoConverter缺少java.time类的转换器.

在Spring 4中,我找到了带有不同转换器的org.springframework.format.datetime.standard.DateTimeConverters,包括声明为私有静态类的InstantToLongConverter和LongToInstantConverter.

如何配置MongoTemplate以使用它们将Instant字段映射到longs?

解决方法:

我不知道这是不是最好的方法,但我添加了Java 8日期/时间(JSR-310)类型支持Spring Data MongoDB 1.5.0.RELEASE,如下所示:

>第一步.添加简单的弹簧转换器

public class InstantToLongConverter implements Converter {

@Override

public Long convert(Instant instant) {

return instant.toEpochMilli();

}

}

public class LongToInstantConverter implements Converter {

@Override

public Instant convert(Long source) {

return Instant.ofEpochMilli(source);

}

}

public class LocalDateToStringConverter implements Converter {

@Override

public String convert(LocalDate localDate) {

return localDate.toString();

}

}

public class StringToLocalDateConverter implements Converter {

@Override

public LocalDate convert(String source) {

return LocalDate.parse(source);

}

}

>第二步.在您的AbstractMongoConfiguration实现中使用MappingMongoConverter注册这些自定义转换器,如下所示:

@Configuration

@EnableMongoRepositories(basePackages = {"my.app.repository"})

public class MongoConfiguration extends AbstractMongoConfiguration {

...

@Override

public CustomConversions customConversions() {

return new CustomConversions(Arrays.asList(

new InstantToLongConverter(), new LongToInstantConverter(),

new LocalDateToStringConverter(), new StringToLocalDateConverter()));

}

}

现在,您的文档的Instant字段将作为长值保留,LocalDates将作为字符串保留.

标签:java,java-8,spring-data,spring-data-mongodb,java-time

来源: https://codeday.me/bug/20190930/1836165.html

mongo java 日期,Java 8日期/时间(JSR-310)类型与Spring Data MongoDB的映射相关推荐

  1. mongo java 注解,在Java中使用Spring Data MongoDB操作Mong | zifangsky的个人博客

    前言:在上一篇文章中(PS:https://www.zifangsky.cn/923.html)我简单介绍了如何在Linux中安装MongoDB以及MongoDB的增删改查等基本命令用法(PS:更多M ...

  2. mongodb数据库java接口,MongoDB —— 使用Spring Data MongoDB操作数据库

    我们使用Spring Data MongoDB可以方便的在Spring boot项目中操作MongoDB 文档地址:https://docs.spring.io/spring-boot/docs/2. ...

  3. 彻底弄透Java处理GMT/UTC日期时间

    平时工作中遇到时间如何处理?用Date还是JDK 8之后的日期时间API?如何解决跨时区转换等等头大问题.A哥向来管生管养,管杀管埋,因此本文就带你领略一下,Java是如何实现GMT和UTC的? 众所 ...

  4. JSR 310日期时间API

    Java以JDK 8为界,有两套处理日期和时间的API,分别是Date和JSR 310. java.util.Date自JDK1.0就已经存在,用于表示日期+时间的类型,虽然年代十分久远,并且此类具有 ...

  5. java db 10.4.13_Spring Data MongoDB 1.10.13和Mongo 3.4

    我正在尝试从Mongo 3.2升级到Mongo 3.4 . 我更新了我的POM以使用最新的Spring Data MongoDB(1.10.13),同时这样做,我注意到Spring Data Mong ...

  6. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  7. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  8. java连接neo4j(使用spring data neo4j)

    1. Spring Data Neo4j概述 认识Spring-Data-Neo4j之前,需要先对OGM有一个了解 OGM即对象图映射(Object Graph Mapper ,简称ORM ),基于O ...

  9. mongo3.5 java cursor,Spring Data MongoDB-需要'cursor'选项

    我试图使用Spring Data MongoDB 3.6-rc4执行聚合操作. Aggregation agg = newAggregation( lookup("orders", ...

最新文章

  1. 直观获取redis cluster 主从关系
  2. linux 同步与异步--阻塞与非阻塞型I/O
  3. 必读 | 六月份不容错过的十大重磅好文,机器学习和数据科学的小伙伴拿走不谢 原创 2017-07-10 爱收藏的 AI科技大本营 作者 | Flavian Hautbois 翻译 | AI科技大
  4. IOS研究之App转让流程须知具体介绍
  5. linux多线程学习(一)
  6. 网易传媒回应“变相裁员 ”说法:假消息,将提起诉讼
  7. 在集设|参透海报设计中提取排版设计灵感
  8. 16张精美的数据可视化,带你走进它的前世今生
  9. python高维数据存储_Numpy高维数据的理解
  10. NodeManager节点启动报错内存不足
  11. python 矩阵点乘_Python之Numpy库基础——矩阵运算
  12. 身份证读取设备开发解决方案:3、单片机读取身份证信息的demo
  13. 专注于操作系统25之软盘镜像
  14. 我是如何考上武汉大学在职研究生的
  15. 2020年第十届C/C++ B组第二场蓝桥杯省赛真题
  16. dnSpy反编译C#编译以后dll文件并调试
  17. java 电话呼叫中心_java呼叫中心系统
  18. python查看qq撤回消息_QQ坦白说里匿名叫我还想逃?Python轻松查看匿名用户信息...
  19. css 鼠标变成小手
  20. 读书札记:一些常用计算机管理命令

热门文章

  1. Android应用开发—知识点汇总
  2. .net core linux 编译,.NET Core 源码编译的问题解析
  3. linux 进程通信机制,linux的进程通信机制小结
  4. np.random.seed(0)作用
  5. mysql时间间隔interval_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
  6. java事件类_关于Java事件类的一些思考
  7. vue indev.html,webpack - Can't add script tag to Vue component files ( *.vue ) - Stack Overflow
  8. 本地连接Linux工具
  9. pipeline代码自动生成
  10. Codeforces - 1194C - From S To T - 子序列 - 排序