Java Couchbase转换器弹簧数据混淆整数和长

Java Couchbase转换器弹簧数据混淆整数和长,java,spring,spring-data,couchbase,Java,Spring,Spring Data,Couchbase,我为InstantLong添加了一个couchbase转换器,但读取值时出错 org.springframework.core.convert.ConverterNotFoundException:未找到能够从[java.lang.Integer]类型转换为[java.time.Instant]类型的转换器。 我的转换器看起来像这样 @WritingConverter public enum InstantToLongConverter implements Converter<I

我为
Instant
Long
添加了一个couchbase转换器,但读取值时出错

org.springframework.core.convert.ConverterNotFoundException:未找到能够从[java.lang.Integer]类型转换为[java.time.Instant]类型的转换器。

我的转换器看起来像这样

  @WritingConverter
  public enum InstantToLongConverter implements Converter<Instant, Long> {
    INSTANCE;

    public Long convert(Instant source) {
      return source == null ? null : source.getEpochSecond();
    }
  }

  @ReadingConverter
  public enum LongToInstantConverter implements Converter<Long, Instant> {
    INSTANCE;

    @Override
    public Instant convert(Long source) {
      return source == null ? null : Instant.ofEpochSecond(source);
    }
  }
@WritingConverter
公共枚举InstantToLongConverter实现转换器{
实例;
公共长转换(即时源){
返回源==null?null:source.getepochsond();
}
}
@读取转换器
公共枚举LongToInstantConverter实现转换器{
实例;
@凌驾
公共即时转换(长源){
返回源==null?null:Instant.ofepochssecond(源);
}
}
我应该只使用整数吗?
这是一个bug吗?

以下是关于方法重载的内容:

整数永远不会绑定到Long,因为Integer和Long是不同的对象类型,它们之间没有is-A关系。这适用于任何两个包装器类


但是,它可以绑定到对象,因为Integer是一个对象。

如果您查看java.lang.Integer和java.lang.Long,它们的共同祖先是java.lang.Number。也就是说,Spring数据不能使用转换器长瞬间来转换整数

可能的解决办法:

  • 修改转换器以转换数字
  • 创建另一个转换器