spring-boot - 没有找到能够从 [java.lang.String] 类型转换为 [java.time.Instant] 类型的转换器
问题描述
我们已将 springboot 1.5.3 升级到 2.0。在阅读现有文档时,我们遇到了异常。
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [java.time.Instant]
下面的 mongo 文档和实体类是一样的。与以前的springboot版本它工作正常。现在我在mongoTemplate.findOne()
API 调用期间遇到异常。
{
"_id": "a884b47533a2f2596",
"_class": "com.A.B.C.model.Entity1",
"field1": "00006353",
"field2": "384493",
"field3": "327274",
"date": "2018-09-03T08:25:22.461Z"
}
public class Entity1 {
@Id
private String id;
@Indexed
private String field1;
@Indexed
private String field2;
@Indexed
private String field3;
private Instant date;
}
解决方案
此问题与 Java 8 日期及其序列化/反序列化有关。您应该创建一个 objectMapper 的自定义实例,然后将其注入您的 mongoTemplate。
这里解释得很好: https ://gist.github.com/corbtastik/7727bb870751f488ab30383aa72c834d
此外,您需要添加 Maven 依赖项:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
祝你好运!
推荐阅读
- regex - Regular Expression for poorly defined key value pairs
- python-2.7 - 使用 python 软件编码和使用文件 - 网络攻击的安全性?
- openpyxl - 将多个 openpyxl 工作表整理到不同的工作簿中?
- vb.net - 如何在 Visual Basic 中将数组项添加到字典中
- javascript - 使用 JavaScript 制作成本计算器时遇到问题
- apache - 允许跨多个内部网络访问 Web 服务器 [LAMP]
- java - AEM Sling 资源解析器映射方法
- python - 在 Powershell 中使用 CV2 和 Skimage 时出现内存错误
- vbscript - 将“svn info”输出重定向到 Windows 脚本主机中的文件创建了一个空文件
- python - 使用 numpy 数组在 id 和索引之间进行映射