2014-02-11 38 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

解释为什么这个工程。 –