我们已经将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;
}
答案 0 :(得分:1)
此问题与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>
祝你好运!