2017-08-08 178 views
-1

我有一個默認的彈簧web MVC應用程序,我使用JPA和有時需要創建某種總結視圖頁面,例如:我有三個對象(在我的情況下,我有很多)House,Car and Person在這個例子中,房子有車輛和人員,所以在我的頁面視圖,我需要做的是這樣JPA什麼是獲取摘要對象的最佳方式?

House 1: 5 Cars, 6 Persons 
House 2: 3 Cars, 3 Persons 
House 3: 6 Cars, 2 Persons etc... 

我想使用本機查詢,因爲我非常良好的SQL查詢,所以沒有但是JPA沒有像String的MAP那樣返回的東西,我對JPA的性能一無所知。

+0

我投票結束此問題,因爲該要求已在[官方JPA文檔](http://docs.oracle.com/html/E13946_04/ejb3_langref.html)中解決。 – manish

+0

因此,我們可能不需要詢問官方文檔中已經存在的內容,但我認爲幾乎所有文檔都記錄在文檔中,問題是:我在stackoverflow中搜索它(因爲我有一些偏執狂,我認爲一切都在這裏)我沒有找到類似的問題或答案,所以我問。我做得不好? –

回答

0

JPA查詢

SELECT 
    h 
    , COUNT(c) 
    , COUNT(p) 
FROM 
    House h 
LEFT JOIN 
    h.cars c 
LEFT JOIN 
    h.persons p 
GROUP BY 
    h 

可以爲entityManager.createQuery(query).getResultList()執行得到List<Object[]>

List的每個元素將是一個由三個值組成的數組(對應於SELECT子句中的三個值)。第一個值將是類型House(由於SELECT h),而第二個和第三個將是Long類型。

由於從JPQL到SQL的轉換非常快,查詢性能與運行來自同一應用程序的本機查詢並沒有太大的區別。

相關問題