2015-10-26 38 views
1

我正在使用JPA,並且我被困在查詢中。在我的系統中,消費者類具有多對一關係的訂單,一個消費者可以有多個訂單或任何訂單,並且訂單必須具有消費者強制性。訂單有一個名爲totalPrice的屬性,它是訂單的總金額。JPA中MAX的MAX

我正試圖抓取花費更多錢的消費者。我需要做他們的訂單的總和,然後最大,所以首先,我已經嘗試了本獲得最大:

select max(sum(o.totalPrice)) from Order o group by Order.consumer 

但JPA不支持MAX(SUM(...此外, doesn't支持任何子查詢從末條款或「限制」的條款。

任何想法?

+0

你可能會得到你的答案在這個線程http://stackoverflow.com/questions/3449719/how-to-run-an-aggregate-function-like-sum-on-two-columns-in-jpa-and -display-thei或http://stackoverflow.com/questions/4624807/using-sum-in-hibernate-criteria –

+0

你確定它不是你的查詢錯誤嗎?你還沒有定義'o',所以'o.totalPrice'不存在。 – Deltharis

+0

LIMIT子句是SQL。 JPQL支持setMaxResults/setFirstResult,它可以做同樣的事情......除非你指的是子查詢上的那些。 –

回答

0

自己解決。我使用了「ALL」操作符。謝謝。

+0

你是怎麼使用「ALL」操作符的? –

0

您所要求的兩級分組。首先你計算每消費總和,第二你希望最大化所有消費者,最簡單的方法是在sql語句中計算每個消費者的總和,然後按總和排序並檢索第一行。

但是,如果你有很多消費者和訂單(在現實生活系統中我認爲你有),這樣的選擇語句總是對消費者和訂單進行全表掃描。通常這在性能上至關重要。也許它可以通過計時器或任何時候輸入新訂單來預先計算其實體(報告實體)中的金額。