2016-10-18 70 views
2

我打過電話Lawyer的實體,並在LawyerRepository下面的一段代碼:如何在spring boot中註冊jpa轉換器?

import javaslang.control.Option; 
import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.data.jpa.repository.Query; 
import org.springframework.data.repository.query.Param; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface LawyerRepository extends JpaRepository<Lawyer, Long> { 

    @Query("select distinct l from Lawyer l where l.account.username = :email") 
    Option<Lawyer> findLawyerByEmail(@Param("email") String email); 

} 

正如你可以看到,我想回到javaslang.control.Option而不是java.util.Optional。它導致以下情況例外:

org.springframework.core.convert.ConversionFailedException:從類型無法 轉換[java.util.ArrayList中]鍵入 [javaslang.control.Option]爲值「[ [email protected]]'; 嵌套的例外是 org.springframework.core.convert.ConverterNotFoundException:沒有 轉換器找到能夠從 [java.util.ArrayList中]類型轉換的輸入[javaslang.control.Option]

而這裏的轉換器:

import javaslang.control.Option; 
import org.springframework.core.convert.converter.Converter; 
import org.springframework.stereotype.Component; 

import java.util.ArrayList; 

@Component 
public class OptionConverter implements Converter<ArrayList<?>, Option<?>> { 

    @Override 
    public Option<?> convert(ArrayList<?> input) { 
     if (true) { 
      throw new RuntimeException("lol"); 
     } 
     return null; 
    } 

} 

我的問題是如何註冊我正確提供的轉換器?

+0

添加它作爲一個bean應該是你唯一需要做的事情。 –

+0

@ M.Deinum,我想我已經做到了,但仍然失敗。 – Opal

+0

@ M.Deinum不是'@ Component'做的嗎? – Opal

回答

相關問題