【问题标题】:ZonedDateTime in MongoDB through Morphia通过 Morphia 在 MongoDB 中的 ZonedDateTime
【发布时间】:2017-01-02 20:29:46
【问题描述】:

简而言之:

  • java.time.ZonedDateTime 没有 args 构造函数(实际上它没有
    构造函数)
  • 为了克服这个问题,我应该为 Morphia 写一个ZonedDateTimeConverter
  • 如果我尝试在没有转换器的情况下保存和加载我的ZonedDateTime,Morphia 将完整的ZonedDateTime 对象保存为DBObject,这很酷,因为 我可以读取所有字段并从中启动 ZonedDateTime 对象 它,但我在加载时遇到异常:No usable constructor for java.time.ZonedDateTime
  • 如果我尝试使用转换器保存和加载ZonedDateTime,我得到了 另一个例外:Can't find a codec for class java.time.LocalDateTime。我开始玩转换器,基于 在this 文章上,但没有任何结果。
  • 因此,如果我没有转换器,我可以保存但无法加载,如果我有转换器,我什至无法保存,因为缺少编解码器。

有什么想法吗?

更新: 结果我应该为从ZonedDateTime 开始的每个子类型编写一个转换器(例如LocalDateTimeLocalDateLocalTime),但结果我应该为java.time.ZoneRegion 编写一个转换器,它是包私有的。

【问题讨论】:

    标签: java mongodb java-8 morphia zoneddatetime


    【解决方案1】:

    我上周针对 1.3 版本向 Morphia 推送了对更常见的 Java 8 日期时间类型的支持。请参阅问题 here 和链接的提交。如果您需要的类型未列出,请提交 Morphia 问题,我会尽量确保它也包含在 1.3 中。

    【讨论】:

    • 我想这是一个流行的用例,但是如果我们想锁定到一个特定的时刻并且不受夏令时或不同的服务器时区的影响,它看起来就像 java8 做事的方式这是 ZonedDateTime.now(ZoneOffset.UTC) 吗?我们应该如何将它与 morphia 一起使用,以便它可以存储和串行/反序列化?
    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多