Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPQL选择实体并获取属于所选实体的集合的计数_Java_Hibernate_Jpa - Fatal编程技术网

Java JPQL选择实体并获取属于所选实体的集合的计数

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

我有一个实体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.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”关键字。