直到今天我用的是這樣一句話:春數據JPA庫返回Object [],而不是MyType的同時使用和函數
@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> findTopFiveBestSellerNative();
這裏,我將返回類型定義爲產品的列表,我究竟得到了什麼我需要。所選列total_quantity簡單地被忽略。
最後,我需要將分頁整合到此查詢中。由於Spring不支持使用原生查詢進行分頁處理,因此我想先將此查詢轉換爲JPQL(然後我將添加分頁)。現在它看起來像這樣:現在
@Query(value = "select p, sum(po.quantity) as total_quantity " +
"from Product p, ProductOrder po " +
"where p.id = po.pk.product " +
"group by p.id, p.name " +
"order by total_quantity desc")
List<Product> findTopFiveBestSeller();
返回類型是對象陣列的列表,其中陣列的第一個元素是產品,並且第二個是total_quantity。 (雖然方法簽名說明列表..)
我該如何更改我的語句或以某種方式實現此目的,以便我不必處理數組,並且只需獲取我的Product對象?
編輯:我有這個想法使用這個查詢作爲子查詢,並從子查詢中選擇產品。事實證明JPQL不能在'from'子句中執行子查詢。
我會簡單地替代「產品」與「對象」。對象會處理我思想中的一切。 – pmverma
並非如此簡單。首先它是一個對象數組。所以我必須迭代對象[]的列表,並獲取第一個元素,將其轉換爲Product,放入一個新列表中,以便將其用作產品列表。其次,當我傳遞可分頁屬性這是我的實際目標),返回類型是Page。所以我必須遍歷頁面中的對象數組,再次獲取第一個元素,最後我必須初始化自己的頁面,分別指定每個彈簧頁面的屬性(大小,排序,方向等),以便在最後我可以有一個頁面,我可以無縫地使用 – akcasoy