2014-02-11 34 views
1

我有一個具有B元素集合的實體A.JPQL選擇實體並獲取屬於選定實體的集合

我想創建一個查詢,基本上做到這一點:

Select a, count(b) from A a inner join fetch a.b b group by a 

我希望得到一個數組對象,其中元素0是我的一個實體和元素1是一個數值,即在數採集。

JPA(由Hibernate支持)引發以下錯誤:

Caused by: java.sql.SQLException: Not in aggregate function or group by clause: [email protected] in statement (sql query) 

當我複製並粘貼錯誤向Postgres的本地SQL,這是行不通的。

當我複製並從以下JPQL查詢粘貼本地SQL:

Select a, count(b) from A a inner join fetch a.b b group by a, b 

的Postgres返回預期的結果。問題在於,Hibernate仍然像第一個查詢一樣咳嗽相同的錯誤。

+0

您的查詢是沒有意義的。如果你按a,b分組,計數顯然是1,因爲每一行[a,b]都與其他所有行不同。也就是說,即使你修正了你的查詢,你也可以通過https://hibernate.atlassian.net/browse/HHH-1615來修正 –

+0

這個bug看起來像我遇到的情況,但是Zaroual Mohamed的查詢確實有效 – tfecw

回答

0

試試這個:

SELECT DISTINCT a, a.b.size FROM A a INNER JOIN FETCH a.b b 
+0

基本上可以工作,但如果我有2個A的1個B和一個4個B的我有5個對象返回。前4個看起來像 Object [] {A,4},最後一個看起來像Object [] {B,1} – tfecw

+0

我編輯查詢。請嘗試新版本,並告訴我們它是否工作:) –

+0

解釋爲什麼這個工程。 –