如何在Spring Data Elasticsearch中反序列化OffsetDateTime?

问题描述 投票:1回答:1

当我只是从集群中获取文档时,我无法在spring数据elasticsearch中反序列化OffsetDateTime。有一些方法可以解决该问题,但大多数方法对于Spring Boot的早期版本有效。同样,在spring-data-elasticsearch的当前快照发行版中,杰克逊映射器也被删除,并由某些映射器类代替。

可能有人请给我一个提示,如何使用当前版本的boot + elastic 6.x / 7.x正确解决此问题?

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.OffsetDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

我正在使用REST高级客户端。

spring-boot spring-data-elasticsearch
1个回答
0
投票

对于Spring Data Elasticsearch 3.2,您将需要使用自定义的Jackson Mapper,在其中注册相应的模块。

[从Spring Data Elasticsearch 4.0起(当前可作为里程碑版本4.0.0.M3使用)OffsetDateTime可以使用自定义日期格式进行写入和读取,似乎OffsetDateTime可以进行语法分析,我会认为basic_date_time格式应该可以,但是我必须找到一个自定义格式字符串。

我刚刚尝试了以下定义:

@Field(type=FieldType.Date, format=DateFormat.custom, pattern="uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSSZ")

但是如上所述,这将用于即将发布的Spring Data Elasticsearch版本4。

© www.soinside.com 2019 - 2024. All rights reserved.