如何解决找不到能够从类型 TupleBackedMap 转换为类型 [com.example.dto.ExampleDto] 的转换器
How to resolve No converter found capable of converting from type TupleBackedMap to type [com.example.dto.ExampleDto]
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.example.dto.ExampleDto]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:194) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:293) ~[spring-data-commons-2.1.5.RELEASE.jar:2.1.5.RELEASE]
当我查询使用本机 JPA 查询中的 returns 2 个值时,会抛出上述错误。我在下面的 DTO 中捕获查询响应:
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ExampleDto {
@Id
private String name1;
private int nameFlag;
}
并且在 DAO class 中,我正在调用本机查询,如下所示。该查询适用于 SQL Developer 和 returns 2 条记录。但是当如下调用时,它会抛出上述错误。
List<ExampleDto> getExampleDto = myJPARepository.
.findNameObject(uuid);
DTO class 有问题,我需要更改。注释?我不确定这里缺少什么,尽我所能尝试,放入@Entity 注释,@Data 注释,调用查询时我无法解决此错误。
更新:与此关联的本机查询是
@Query(value = "select name1, nameFlag from NameTable",
nativeQuery = true, name = "findNameObject where namekey = ?")
List<ExampleDto> findNameObject(
@Param("nameKey") UUID nameKey);
这是一个错误:https://jira.spring.io/browse/DATAJPA-1714
您可以将 JPQL 与构造函数表达式、接口投影或自定义方法实现一起使用作为解决方法。
确保您的存储库 class 使用与您从 本地查询 中提取记录相同的 class。下面显示的 XYZDTO
示例
@Repository
public interface XYZRepository extends JpaRepository <XYZDTO, Long> {
}
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.example.dto.ExampleDto]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:194) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:293) ~[spring-data-commons-2.1.5.RELEASE.jar:2.1.5.RELEASE]
当我查询使用本机 JPA 查询中的 returns 2 个值时,会抛出上述错误。我在下面的 DTO 中捕获查询响应:
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ExampleDto {
@Id
private String name1;
private int nameFlag;
}
并且在 DAO class 中,我正在调用本机查询,如下所示。该查询适用于 SQL Developer 和 returns 2 条记录。但是当如下调用时,它会抛出上述错误。
List<ExampleDto> getExampleDto = myJPARepository.
.findNameObject(uuid);
DTO class 有问题,我需要更改。注释?我不确定这里缺少什么,尽我所能尝试,放入@Entity 注释,@Data 注释,调用查询时我无法解决此错误。
更新:与此关联的本机查询是
@Query(value = "select name1, nameFlag from NameTable",
nativeQuery = true, name = "findNameObject where namekey = ?")
List<ExampleDto> findNameObject(
@Param("nameKey") UUID nameKey);
这是一个错误:https://jira.spring.io/browse/DATAJPA-1714
您可以将 JPQL 与构造函数表达式、接口投影或自定义方法实现一起使用作为解决方法。
确保您的存储库 class 使用与您从 本地查询 中提取记录相同的 class。下面显示的 XYZDTO
示例@Repository
public interface XYZRepository extends JpaRepository <XYZDTO, Long> {
}