我为Instant
< =>添加了一个沙发基地转换器Long
但我在阅读该值时遇到错误。
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [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);
}
}
我应该使用Integer吗? 这是一个错误吗?
答案 0 :(得分:1)
如果你看一下java.lang.Integer和java.lang.Long,它们的共同祖先就是java.lang.Number。意思是,您的转换器Long&lt; =&gt; Spring数据不能使用Instant来转换整数。
可能的解决方案:
答案 1 :(得分:-1)
以下是方法重载:
Integer永远不会绑定到Long,因为Integer和Long是不同的对象类型,它们之间没有IS-A关系。对于任何两个包装类都是如此。
但是,它可以绑定到Object,因为它是Integer IS-A Object。