Hej,
Natrafiłem na pewien błąd i chciałbym się poradzić.
Korzystam ze Spring'a i Hibernate'a, baza MySql. Chciałbym z bazy danych pobrać dane już trochę opracowane, a nie czyste rekordy. Wymyśliłem sobie w repozytorium taką SQLke:
@Modifying(clearAutomatically = true)
@Query(value = "SELECT customer_id, company_id as company, sum(total_quantity), sum(total_price), avg(stock_index_value) FROM orders WHERE customer_id=:customerId GROUP BY company_id", nativeQuery = true)
List<Orders> findOrderDataByCustomer(@Param("customerId") int customerId);
no i dostaję błąd:
2023-06-14 10:24:36.319 WARN 6084 --- [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: S0022
2023-06-14 10:24:36.319 ERROR 6084 --- [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper : Column 'id' not found.
2023-06-14 10:24:36.326 ERROR 6084 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [SELECT customer_id, company_id as company, sum(total_quantity), sum(total_price), avg(stock_index_value) FROM orders WHERE customer_id=? GROUP BY company_id]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query] with root cause
Moje pytanie brzmi następująco. Czy dobrze rozumiem, że błąd jest spowodowany tym, że nie pobieram z bazy "id", a jest to wymagane w przypadku JpaRepository?
Jeśli nie to co robię źle? Ostatecznie chyba pobiorę z tabeli wszystkie rekordy i opracuje sobie w serwisie, tak jak potrzebuję, ale chciałbym zrozumieć co zrobiłem źle.
Edit:
Hmm, zacząłem dodawać po kolei kolejne kolumny z tabeli i zaczęło działać dopiero gdy dodałem pobieranie wszystkich, które mam w encji.