【问题标题】:Mongotemplate: How to convert result field to custom Java Type?Mongotemplate:如何将结果字段转换为自定义 Java 类型?
【发布时间】:2019-07-24 06:27:30
【问题描述】:
// collection: test
{
  ...
  Datetime: 43665.384931
  ...
}
public Class POJO {
  @Field("ID")
  private String id;

  @Field("Datetime")
  private Date datetime; // Where can I implement a converter to cast double value from mongo to Java type Date here?
}
mongoTemplate.findOne(new Query(), POJO.class, "test")

我在哪里可以实现一个转换器来将双精度值从 mongo 转换为 Java 类型的 Date?

【问题讨论】:

    标签: spring mongodb spring-boot spring-data-mongodb


    【解决方案1】:

    您可能想尝试一下即将发布的 Spring Data MongoDB 2.2 版本的@Field(targetType = FieldType.INT64)。它允许使用ConversionService 将类型信息传递给转换子系统以执行所需的转换。

    class Pojo {
    
      String id;
      @Field(targetType = FieldType.INT64) Date date;
    }
    

    在撰写本文时,只有为Date -> String 转换注册的转换器,但没有为Date -> Long 注册的转换器,因此您还需要注册转换器。

    ((GenericConversionService) mongoTemplate.getConverter().getConversionService())
      .addConverter(new Converter<Date, Long>() {
        @Override
        public Long convert(Date source) {
          return source.getTime();
        }
      });
    

    【讨论】:

      【解决方案2】:

      注册一个MongoCustomConversions bean 对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-19
        • 2020-03-17
        • 2020-09-13
        • 1970-01-01
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        相关资源
        最近更新 更多