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数据不能使用转换器长瞬间来转换整数 可能的解决办法:
- 修改转换器以转换数字
- 创建另一个转换器