Невозможно преобразовать результат @Query в POJO - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть собственный запрос к таблице в Spring Boot. Я хотел бы сохранить результаты в POJO.

public interface LegalRepository extends JpaRepository<LegalEntity, Long> {
@Query(value = "...SELECT company_id as id ,AVG((...)) as average ...." ,nativeQuery = true)
        List<QueryObject> returnMeanValue();
}

LegalEntity является основным объектом для таблицы данных, а QueryObject является производным.

Результат запроса выглядит следующим образом:

company_id |средний

1 |1560850.633333333

2 |2365230,933333333

3 |13714243.266666666

4 |15375235.133333333

Это мой POJO:

@Entity
public class QueryObject {

@Id
Integer company_id;

@Column(name="average")
Double average;
public Integer getCompany_id() {
    return company_id;
}
public void setCompany_id(Integer company_id) {
    this.company_id = company_id;
}
public Double getAverage() {
    return average;
}
public void setAverage(Double average) {
    this.average = average;
}
@Override
public String toString() {
    return "QueryObject [company_id=" + company_id + ", average=" + average + "]";
}
public QueryObject(Integer company_id, Double average) {
    super();
    this.company_id = company_id;
    this.average = average;
}

}

Обратите внимание, что company_id уникален.

После выполнения:

@Bean
public void getUp() {

 List<QueryObject> qo;
 qo = leg_rep.returnMeanValue();
 log.info(qo.get(0).toString());

}

Выдается следующее исключение:

org.springframework.core.convert.ConversionFailedException: Не удалось преобразовать тип [java.lang.Object []] в тип [QueryObject] для значения '{1, 1560850.633333333}';

вложенным исключением является org.springframework.core.convert.ConverterNotFoundException: не найден конвертер, способный преобразовывать тип [java.lang.Integer] в тип [QueryObject]

Как мне решить эту проблему?

1 Ответ

1 голос
/ 11 ноября 2019
  1. Создать интерфейс QueryObject

  2. Создать геттеры:

public interface QueryObject {

    Integer getCompany_id();
    Double getAverage();

}

После этого данные пружины JPAавтоматически создать / заполнить ваш объект результата.

Подробнее см. документацию по пружине: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

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