Ошибка типа преобразования с собственным запросом JPA - PullRequest
0 голосов
/ 17 марта 2019

Я написал собственный запрос, чтобы получить топ-5 тегов для вопросов, я создал класс для хранения возвращаемых данных - это только имя тега и общее количество вхождений, но я получаю ошибку преобразования типа, которую я получаюНе понимаю.

@Query(value = "select distinct t.naam as name, count(t.id) as total from vragen_tags vt " +
            "left join tags t on vt.tag_id = t.id " +
            "left join vragen v on vt.vraag_id = v.id " +
            "where v.actief = true " +
            "group by t.naam " +
            "order by total desc " +
            "limit ?1", nativeQuery = true)
    Set<TagAndCountResponse> getTopTags(int limit);

Класс:

public class TagAndCountResponse {
    private String name;
    private int total;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }
}

Но я получаю эту ошибку:

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [be.ambrassade.jeugdlink.model.response.TagAndCountResponse]
    at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:194) ~[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]
...

Что вызывает эту ошибку?

1 Ответ

0 голосов
/ 18 марта 2019

Я нашел ответ через другую среду.(спасибо Les) Решение состоит в том, чтобы использовать проекции (https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections),, поэтому в моем случае переписывание конкретного класса для этого интерфейса заставляет его работать.

public interface TagAndCountResponse {
    String getName();
    int getTotal();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...