通过Hibernate日志进行的ved非常清楚,问题在于您通过Java构建的查询。您是否尝试在pgAdminIII上执行相同的查询?如果运行独立查询,将收到相同的错误
您面临的问题是,您在通过Hibernate日志进行的ved非常清楚,问题在于您通过Java构建的查询。您是否尝试在pgAdminIII上执行相同的查询?如果运行独立查询,将收到相同的错误,java,postgresql,hibernate,jpa,Java,Postgresql,Hibernate,Jpa,您面临的问题是,您在GROUP BY子句中使用的列在SELECT列列表中不可用。如果您将查询更改为类似这样的内容,那么您应该能够运行查询而不会出现任何问题 SELECT r.release.protected_, r.release.releaseType, r.version FROM ReleaseCategory r WHERE r.release.lifecycleStatus = :lifecycleStatus AND
GROUP BY
子句中使用的列在SELECT
列列表中不可用。如果您将查询更改为类似这样的内容,那么您应该能够运行查询而不会出现任何问题
SELECT r.release.protected_,
r.release.releaseType,
r.version
FROM ReleaseCategory r
WHERE r.release.lifecycleStatus = :lifecycleStatus
AND r.release.releaseType IS NOT NULL
GROUP BY r.release.protected_, r.release.releaseType, r.version
您似乎没有像问题中提到的那样使用此查询,但是您在GROUP BY
子句中添加了两个额外的列,它们不在SELECT
列列表中
您在问题中提供的JAVA
代码片段需要更改
希望这能回答你的问题 您通过Hibernate日志收到的错误消息非常清楚,问题在于您通过Java构建的查询。您是否尝试在
pgAdminIII
上执行相同的查询?如果运行独立查询,将收到相同的错误
您面临的问题是,您在GROUP BY
子句中使用的列在SELECT
列列表中不可用。如果您将查询更改为类似这样的内容,那么您应该能够运行查询而不会出现任何问题
SELECT r.release.protected_,
r.release.releaseType,
r.version
FROM ReleaseCategory r
WHERE r.release.lifecycleStatus = :lifecycleStatus
AND r.release.releaseType IS NOT NULL
GROUP BY r.release.protected_, r.release.releaseType, r.version
您似乎没有像问题中提到的那样使用此查询,但是您在GROUP BY
子句中添加了两个额外的列,它们不在SELECT
列列表中
您在问题中提供的JAVA
代码片段需要更改
希望这能回答你的问题 问题已经解决。我更改了查询,如下所示
Select r.release.protected_, r.release.releaseType, r.version FROM
ReleaseCategory r where r.release.lifecycleStatus = :lifecycleStatus and
r.release.releaseType is not null
group by r.release.protected_, r.release.releaseType, r.version`
append(“来自releaser类别,其中
r、 elease.lifecycleStatus=:lifecycleStatus“;sqlString.append(“和
r、 release.releaseType不为空“);append(“分组依据
r、 release.protected,r.release.releaseType.id,r.version.id,r.id
");
它工作得很好
谢谢大家。问题已经解决。我更改了查询,如下所示
Select r.release.protected_, r.release.releaseType, r.version FROM
ReleaseCategory r where r.release.lifecycleStatus = :lifecycleStatus and
r.release.releaseType is not null
group by r.release.protected_, r.release.releaseType, r.version`
append(“来自releaser类别,其中
r、 elease.lifecycleStatus=:lifecycleStatus“;sqlString.append(“和
r、 release.releaseType不为空“);append(“分组依据
r、 release.protected,r.release.releaseType.id,r.version.id,r.id
");
它工作得很好
感谢所有..您必须加入的发布类型:
SELECT
release.protected_, releaseType, r.version
FROM
ReleaseCategory r
JOIN
r.release release
LEFT JOIN
release.releaseType releaseType
WHERE
release.lifecycleStatus = :lifecycleStatus
AND
releaseType IS NOT NULL
GROUP BY
release.protected_, releaseType, r.version
您必须加入releaseType:
SELECT
release.protected_, releaseType, r.version
FROM
ReleaseCategory r
JOIN
r.release release
LEFT JOIN
release.releaseType releaseType
WHERE
release.lifecycleStatus = :lifecycleStatus
AND
releaseType IS NOT NULL
GROUP BY
release.protected_, releaseType, r.version
编写条件查询后,hibernate查询没有releasetyp3_u3;.id。请验证是否已在此处粘贴正确的hibernate查询…谢谢各位。我编辑了这篇文章,并添加了hibernate查询输出和代码的查询形成行。使用没有聚合函数的
groupby
几乎总是一个坏主意。选择的结果应该是什么?您希望每个组中有哪一条记录?这是一个迁移项目,同一个查询在OpenJPA、DB2和Websphere中运行良好。客户端希望将其移动到Hibernate、Postgresql和JBoss。此问题是否已发布到“”?在编写条件查询后,您的hibernate查询没有releasetyp3.id。请验证是否已在此处粘贴正确的hibernate查询…谢谢各位。我编辑了这篇文章,并添加了hibernate查询输出和代码的查询形成行。使用没有聚合函数的groupby
几乎总是一个坏主意。选择的结果应该是什么?您希望每个组中有哪一条记录?这是一个迁移项目,同一个查询在OpenJPA、DB2和Websphere中运行良好。客户端希望将其移动到Hibernate、Postgresql和JBoss。该问题是否被归类为“Thansk N00b PR0GRAMER”。我想尽一切办法来解决这个问题。前面尝试了上述查询,但得到了相同的异常。基本上,上面的一个是原始查询,后来我根据异常添加了两列r.id,r.release.id。原因:org.postgresql.util.PSQLException:ERROR:column“releasetyp3_zy.id”必须出现在GROUP by子句中或在聚合中使用function@anandjava,您是否可以只将r.release.id
添加到GROUP BY
子句中的Java代码中,然后重试一次?在GROUP BY中添加列后,将获得相同的异常。原因:org.postgresql.util.PSQLException:错误:列“releasetyp3_qid”必须出现在GROUP BY子句中或用于聚合函数位置:123Thansk N00b PR0GRAMER。我想尽一切办法来解决这个问题。前面尝试了上述查询,但得到了相同的异常。基本上,上面的一个是原始查询,后来我根据异常添加了两列r.id,r.release.id。原因:org.postgresql.util.PSQLException:ERROR:column“releasetyp3_zy.id”必须出现在GROUP by子句中或在聚合中使用function@anandjava,您能否仅将r.release.id
添加到GROUP BY
子句中的Java代码中并重试一次?在GROUP BY中添加列后,将获得相同的异常。原因:org.postgresql.util.PSQLException:错误:列“releasetyp3_3;.id”必须出现在GROUP BY子句中或用于聚合函数位置:123