Как решить Не найден конвертер, способный конвертировать из типа TupleBackedMap в тип [com.example.dto.ExampleDto] - PullRequest
0 голосов
/ 13 апреля 2020
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]

Вышеуказанная ошибка возникает, когда у меня есть запрос, который возвращает 2 значения в нативном JPA-запросе. Я фиксирую ответ на запрос в DTO ниже:

@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ExampleDto {
    @Id
    private String name1;
    private int nameFlag;
}

А в классе DAO я вызываю собственный запрос, как показано ниже. Запрос работает в SQL Developer и возвращает 2 записи. Но при вызове, как показано ниже, он выдает вышеуказанную ошибку.

List<ExampleDto> getExampleDto = myJPARepository.
                .findNameObject(uuid);

Что-то не так в классе DTO, который мне нужно изменить. Аннотации? Я не уверен, чего здесь не хватает, и попробую, как мог бы, вставив аннотацию @Entity, аннотацию @Data, я не могу устранить эту ошибку при вызове запроса.

ОБНОВЛЕНИЕ: Собственный запрос, связанный с этим:

@Query(value = "select name1, nameFlag from NameTable",
          nativeQuery = true, name = "findNameObject where namekey = ?")
    List<ExampleDto> findNameObject(
            @Param("nameKey") UUID nameKey);

1 Ответ

1 голос
/ 16 апреля 2020

Это ошибка: https://jira.spring.io/browse/DATAJPA-1714

Вы можете использовать JPQL с выражением конструктора, проекцией интерфейса или реализацией пользовательского метода в качестве обходного пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...