Как использовать группу по сумме SQL с Spring Data JPA?

Я хочу загрузить товары продавца по количеству. Это мои таблицы:

Product id name 1 AA 2 BB Productorder order_id product_id quantity 1 1 10 2 1 100 3 2 15 4 1 15 

Это мой репозиторий данных Spring:

 @Repository public interface ProductRepository extends JpaRepository<Product, Long> { @Query(value = "select top 5 p.name, sum(po.quantity) as total_quantity from product p " + "inner join productorder po " + "on p.id = po.product_id " + "group by p.id, p.name " + "order by total_quantity desc", nativeQuery = true) List<Product> findTopFiveBestSeller(); } 

Я получаю HsqlException: Колонка не найдена: id

Я думаю, что эта ошибка не имеет ничего общего с столбцом id, поскольку она существует для обеих таблиц. Выполняет ли «группа по суммам» работу с данными Spring? Поскольку мне кажется немного странным, поскольку Spring Data должна выбирать только атрибуты продукта из базы данных, а с помощью этого sql мы также выбираем сумму (po.quantity). Может ли данные Spring обрабатывать это и преобразовывать результат в список?

PS: Я использую HSQLDB, встроенный в DB.

    После того, как вы изменили выступы выбора из p.name на p.* Чтобы указать, что я p.name несколько значений, а не только объекты String, которые должны быть магически преобразованы в объекты Product , это работает:

     @Repository public interface ProductRepository extends JpaRepository<Product, Long> { @Query(value = "select top 5 p.*, sum(po.quantity) as total_quantity from product p " + "inner join productorder po " + "on p.id = po.product_id " + "group by p.id, p.name " + "order by total_quantity desc", nativeQuery = true) List<Product> findTopFiveBestSeller(); } 

    Спасибо @JMK und @JB Nizet.