Intereting Posts
Можно ли назвать столбцы результатов SQL из строк в другой таблице? (Postgres) Пропустили проверку одной ошибки в if else Декларативный подход для ограничения диапазонов данных в таблице Как установить список значений в качестве параметра в запрос на спящий режим? Рекурсивный выбор в SQL Создать оператор MySQL Alter Table из DataGridView с полями и параметрами? Как исправить эту mysql_query, используйте правильный синтаксис и заставьте его работать? Динамически выберите столбцы, которые будут использоваться в инструкции SELECT Как я могу правильно использовать предложение group by в sql Спящий режим в 1000 раз медленнее, чем запрос sql MS Access Сопоставление групп строк в таблице структуры Часть 2 Объединение обновлений и выбор операторов SQL выбор имен из одной таблицы с несколькими идентификаторами в соединении Объединение двух таблиц с различным количеством столбцов Могу ли я добавить определенную пользователем функцию на уровне сервера в SQL Server 2008 r2?

Как использовать группу по сумме 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.