Вот мой WorkroomDTO:
@NotNull
private Instant createdOn;
@JsonInclude(JsonInclude.Include.NON_NULL)
private Instant changedOn;
Как видите, я использую Java 8 Мгновенный класс. На сервере индексаasticsearch я сохраняю следующее как JSON:
"createdOn": {
"nano": 877000000,
"epochSecond": 1579861613
},
"changedOn": {
"nano": 920000000,
"epochSecond": 1579861613
},
Проблема заключается в том, что, когда я запрашиваю сервер эластичного поиска, чтобы получить мне рабочую комнату
return elasticsearchOperations.queryForPage(new NativeSearchQueryBuilder().withQuery(mainQuery)
.withPageable(elasticUtils.interceptPageable(searchDto.getPageable(), "name"))
.build(),
WorkroomDTO.class);
, я делаю Сопоставление этих полей с моим WorkroomDTO я получаю следующее исключение:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.Instant` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (String)"{"createdOn":{"nano":68000000,"epochSecond":1580127683}
К вашему сведению:
Я создал файл конфигурации, в котором явно регистрируется JavaTimeModule для Object Mapper
@Configuration
public class JacksonConfiguration {
@Value("${application.serialization.include-type-key:true}")
private boolean includeTypeKey = true;
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.addHandler(new MissingTypeIdHandler());
if (includeTypeKey) {
mapper.setMixInResolver(new TypeKeyMixInResolver());
}
return mapper;
}
}
Нужна помощь!