简而言之:
java.time.ZonedDateTime
没有 args 构造函数(实际上它根本没有
构造函数)- 为了克服这个问题,我应该
ZonedDateTimeConverter
为 Morphia写一个 - 如果我尝试保存和加载我的
ZonedDateTime
无转换器,Morphia 会将完整ZonedDateTime
对象保存为DBObject
这很酷,因为我可以读取所有字段并从中启动 ZonedDateTime 对象,但加载时出现异常:No usable constructor for java.time.ZonedDateTime
- 如果我尝试
ZonedDateTime
使用转换器保存和加载,我会遇到另一个异常:Can't find a codec for class java.time.LocalDateTime
. 根据这篇文章,我开始使用转换器,但没有任何结果。 - 因此,如果我没有转换器,我可以保存但无法加载,如果我有转换器,我什至无法保存,因为缺少编解码器。
任何想法?
更新:
原来我应该为从ZonedDateTime
(例如LocalDateTime
,, )开始的每个子类型编写一个转换器LocalDate
,LocalTime
但结果我应该为java.time.ZoneRegion
它编写一个包私有的转换器。