我打過電話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;
}
}
我的問題是如何註冊我正確提供的轉換器?
添加它作爲一個bean應該是你唯一需要做的事情。 –
@ M.Deinum,我想我已經做到了,但仍然失敗。 – Opal
@ M.Deinum不是'@ Component'做的嗎? – Opal