解决 Spring 中的 ConverterNotFoundException 错误
错误概述
在使用 Spring 框架时,可能会遇到如下错误信息:
Exception: org.springframework.core.convert.ConverterNotFoundException
这个错误通常发生在尝试将一种类型转换为另一种类型时,但没有可用的转换器来完成这个操作。Spring 的类型转换器通常用于处理从数据库查询结果到 Java 对象的映射,或者在 Web 应用中将请求参数转换为所需的对象类型。
此错误常见于使用 JPA、MongoDB 或其他数据访问框架时,尤其是在定义查询时。
常见原因
- 缺少转换器:Spring 没有找到适合进行类型转换的转换器。
- DTO 映射问题:在使用数据传输对象(DTO)时,如果 DTO 类没有无参构造函数,Spring 可能无法创建该对象实例。
- 不正确的查询:JPQL 或原生 SQL 查询在返回的结果集与 DTO 映射不匹配时也会导致此错误。
- 类型不匹配:查询结果的类型与预期的 DTO 类型不一致。
- 项目配置问题:Spring 配置可能缺少自定义转换器的注册。
解决方法
方法 1: 定义和使用 Projection
使用 Projection 可以更清晰地定义查询结果的映射。以下是一个示例:
“`java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface ABDeadlineTypeRepository extends JpaRepository<ABDeadlineType, Long>

コメント