当前位置: 首页 > 知识库问答 >
问题:

如何在Spring启动中注册jpa转换器?

訾俊名
2023-03-14

我有一个名为<code>律师</code>的实体,在<code>律师库中有以下代码:

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

}

如您所见,我想返回< code > Java lang . control . option 而不是< code>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;
    }

}

我的问题是如何正确注册我提供的转换器?

共有1个答案

郜振国
2023-03-14

似乎Spring的转换器(springframework.core.convert.converter.Converter)不能与JPA一起使用。

U可能必须使用JPA属性转换器:http://www.thoughts-on-java.org/jpa-21-type-converter-better-way-to/.

Spring可以使Spring的转换器与JPA一起工作是件好事,因此它将与其他Spring数据-*项目保持一致。

 类似资料:
  • 在我的休闲Spring启动应用程序中,我注册了这样的servlet。 该servlet与应用程序注册在同一端口上。问题是,我的基础架构(k8s等)期望应用程序和度量endpoint在不同的端口上工作(就像执行器一样)。 如何在不同的端口上注册第三方servlet?

  • 我是新来的Spring Boot。在我的控制器中,我使用s作为。缺省情况下,在传递无效的时,Spring返回。 当客户端传递一个无效的时,我想抛出一个自定义的,这样我就可以使用这个异常返回一个自定义的错误。 我试图注册一个定制的(实现)。 为了注册这个组件,我将这个转换器添加到springs。使用。 我还尝试使用而不是这里提到的:Spring没有使用mongo定制转换器 我尝试过的其他解决方案是:

  • 所以很明显,添加类型转换器还有其他方式,我通过显式配置转换服务来搞砸了?有没有一种方法可以注册自定义类型转换器而不踩到其他转换器?

  • 问题内容: 我想利用spring-data-jpa和。但是我无法自动接线。(同一包中的所有其他服务均已正确接线): 结果: 由以下原因引起:org.springframework.beans.factory.BeanCreationException:创建名称为’userService’的bean时出错:注入资源依赖项失败;嵌套的异常是org.springframework.beans.facto

  • 我想使用spring-data-jpa和。但我无法得到它。(同一包中的所有其他服务都已正确连接): 结果: 由:org.springframework.beans.factory.BeanCreationException引起:创建名为“用户服务”的bean时出错:注入资源依赖项失败;嵌套异常是org.springframework.beans.factory.nosuchBeanDefiniti

  • 在JavaEE环境中,我将JPA2.1实现与EclipseLink一起使用, CarColor转换器: persistence.xml > 当我在persistence.xml文件上注释转换器的声明,并试图将我的实体持久化到数据库中时,会出现这样的错误:“请确保转换器类名正确,并且存在于持久化单元定义中。”并且没有编译时间异常,只有一个非常明确的警告: