java - 如何在spring boot中注册jpa转换器?

标签 java spring spring-boot spring-data spring-data-jpa

我在 LawyerRepository 中有一个名为 Lawyer 的实体和以下代码:

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: Failed to convert from type [java.util.ArrayList] to type [javaslang.control.Option] for value '[lawyer.Lawyer@5e4c0db5]'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.util.ArrayList] to type [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-* 项目保持一致。

关于java - 如何在spring boot中注册jpa转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103806/

相关文章:

java - 这两种字符串格式有什么区别?

java - 什么时候使用 getAutowireCapableBeanFactory().autowireBean(someBean)?

java - 如何将 html 输入保存到列表中并在每次提交时显示?

spring-boot - 使用java电子邮件获取交货并发送收据

java - 如何将GraphiQL与Spring-Boot集成?

java - YouTube 的响应数组,以编程方式排序

java - 将带有自定义对象的列表传递给另一个 android Activity

java - Spring Request映射期

java - 如何将 native 查询打印到控制台?

spring-boot - 为什么 spring-boot 应用程序中 pom.xml 的第一行显示错误... <?xml version ="1.0"encoding ="UTF-8"?>