Я пытаюсь вернуть прогноз, а не список прогнозов, из собственного запроса. Я продолжаю сталкиваться с ошибкой конвертера:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [PersonRepository$NameProjection]
Моя весенняя версия довольно старая (spring-boot-starter-data-jpa v1.5.3), но я не могу обновить ее по внешним причинам. Поэтому мне просто интересно, смогу ли я заставить его работать с версией, которую я имею.
Мой репозиторий выглядит так:
public PersonRepository extends JpaRepository<Person, Integer> {
interface NameProjection {
private String firstName;
private String lastName;
}
@Query(value = "SELECT first_name AS firstName, last_name AS lastName FROM person where person_id = :personId", nativeQuery = true)
NameProjection getPersonNameById(@Param("personId") Integer personId);
@Query(value = "SELECT first_name AS firstName, last_name AS lastName FROM person", nativeQuery = true)
List<NameProjection> getPersonNames();
}
Когда я вызываю getPersonNameById()
, я получаю ошибку выше , Что интересно, этот метод работает, если я изменю свою проекцию так, чтобы в ней было только 1 поле, скажем, firstName
. Однако всякий раз, когда имеется более одного поля, я получаю ошибку конвертера выше.
Вызов getPersonNames()
работает точно так, как я ожидаю, когда список проекций возвращается с полями, которые я указал.
Как я могу изменить свой код репозитория, чтобы Spring позволил мне возвращать одну проекцию?
Заранее спасибо.