【问题标题】:Spring Data Mongo to convert Joda LocaDateTimeSpring Data Mongo 转换 Joda LocalDateTime
【发布时间】:2012-01-25 11:42:08
【问题描述】:

我正在使用 Joda LocalDateTime 并且转换为 Mongo BSON 的默认行为以这样的方式结束:

"myTime":{
   "iLocalMillis":1327144433115,
   "iChronology":{
      "_class":"org.joda.time.chrono.ISOChronology",
      "iBase":{
         "_class":"org.joda.time.chrono.GregorianChronology",
         "iMinDaysInFirstWeek":4
      }
   }
}

这将在转换回 java 对象时出现问题。

保存到 Mongo 时如何更改某些 java 类型的行为?因为我有几个其他类与默认转换有相同的问题。

我正在使用 spring 3.1 +data + mongo 堆栈。

【问题讨论】:

  • 谢谢,奥利弗。但有几点不清楚: 1)即使只有一个对象需要重写,那么我们需要重新定义整个实体; 2)它不尊重使用 mongoTemplate 的 JPA 生命周期注释。我们有 JPA 吗? 3) 我正在为 spring 3.1 使用 java config,但还没有弄清楚如何将转换器放入 afterMappingMongoConverterCreation()。

标签: java spring mongodb


【解决方案1】:

自定义转换器的使用记录在the reference documentation

【讨论】:

    【解决方案2】:

    我也有同样的问题。要使用 Oliver 的转换器解决方案,我必须为每个具有 jodatime 属性的类创建转换器,这有点烦人。我找不到如何为跨所有域类的特定类型配置转换器。我最终创建了 AbstractMongoEventListener 的子类,然后在保存之前和加载之后重置日期时间字段。希望这可以帮助。

    【讨论】:

      【解决方案3】:

      正如 Oliver 指出的,使用自定义转换器。注意DATAMONGO-1026 中描述的错误。该问题也有自定义转换器的示例,希望很快就会关闭。

      【讨论】:

        猜你喜欢
        • 2015-04-20
        • 2021-11-26
        • 2014-11-16
        • 2015-12-30
        • 2022-01-17
        • 2013-03-04
        • 2018-11-02
        • 2019-12-01
        相关资源
        最近更新 更多