2017-04-13 60 views
0

我添加了一個用於Instant < =>Long的couchbase轉換器,但是在讀取該值時出現錯誤。Couchbase轉換器彈簧數據混淆整數長

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); 
    } 
    } 

我應該只使用整型? 這是一個錯誤?

回答

1

如果你看看java.lang.Integer和java.lang.Long,它們的共同祖先是java.lang.Number。意思是,你的轉換器長< =>即時不能被Spring數據用來轉換整數。

可能的解決方案:

  • 修改您的轉換爲數字<轉換=>即時
  • 創建另一個轉換器整數< =>即時
-1

以下是關於方法重載:

整數從來沒有必然長,因爲整數和長有不同的對象類型並沒有IS-A它們之間的關係。對於任何兩個包裝類都是如此。

但是,它可以綁定到對象,因爲整數IS-A對象。