Java JPQL选择实体并获取属于所选实体的集合的计数
我有一个实体A和一组B元素 我想创建一个查询,它基本上是这样做的:Java JPQL选择实体并获取属于所选实体的集合的计数,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个实体A和一组B元素 我想创建一个查询,它基本上是这样做的: Select a, count(b) from A a inner join fetch a.b b group by a 我希望得到一个数组对象,其中元素0是我的A实体,元素1是一个数字,它是集合中的数字 Jpa(由hibernate支持)抛出以下错误: Caused by: java.sql.SQLException: Not in aggregate function or group by clause: org
Select a, count(b) from A a inner join fetch a.b b group by a
我希望得到一个数组对象,其中元素0是我的A实体,元素1是一个数字,它是集合中的数字
Jpa(由hibernate支持)抛出以下错误:
Caused by: java.sql.SQLException: Not in aggregate function or group by clause: org.hsqldb.Expression@16d829b1 in statement (sql query)
当我将错误中的本机sql复制并粘贴到postgres中时,它不起作用
当我从以下JPQL查询复制并粘贴本机sql时:
Select a, count(b) from A a inner join fetch a.b b group by a, b
Postgres返回预期结果。问题是Hibernate仍然会抛出与第一个查询相同的错误 试试这个:
SELECT DISTINCT a, a.b.size FROM A a INNER JOIN FETCH a.b b
你的问题没有意义。如果按a,b分组,计数显然将为1,因为每[a,b]行都与所有其他行不同。也就是说,即使你修复了你的查询,你也会被这个bug打断,这个bug看起来确实像我遇到的,但是Zaroual Mohamed的查询确实有效,基本上是有效的,但是如果我有两个A,一个有1个B,一个有4个B,我会返回5个对象。前4个看起来都像Object[]{A,4},最后一个看起来像Object[]{B,1},我编辑了查询。请尝试新版本,并告诉我们它是否有效:)它非常简单,您有5个B,并且您正在查询A并加入所有B,因此您有5行。要消除重复,请添加“DISTINCT”关键字。