簡體   English   中英

如何在spring boot中注冊jpa轉換器?

[英]How to register jpa converter in spring boot?

我有一個名為Lawyer的實體和LawyerRepository的以下代碼:

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] 的值“[lawyer.Lawyer@5e4c0db5]”; 嵌套異常是 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;
    }

}

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

似乎 Spring 的轉換器(springframework.core.convert.converter.Converter)不適用於 JPA。

您可能必須使用 JPA 屬性轉換器: http : //www.thoughts-on-java.org/jpa-21-type-converter-better-way-to/

Spring 可以讓 Spring 的轉換器與 JPA 一起工作是很好的,所以它會和其他 spring-data-* 項目保持一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM