Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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_Spring_Postgresql_Jpa_Jpql - Fatal编程技术网

Java 如何使用JPQL从多个多通相关实体获取特定字段值?

Java 如何使用JPQL从多个多通相关实体获取特定字段值?,java,spring,postgresql,jpa,jpql,Java,Spring,Postgresql,Jpa,Jpql,我是JPA的新手,所以不要对这个可能愚蠢的问题太过严厉,但谷歌没有给我答案 我使用PostreSQL数据库。假设我有实体一,它与实体二(列表二)有ManyToOne关系,而实体二又与实体三(列表三)有ManyToOne关系 这三个实体都有自己的ID字段 因此,使用JPQL我尝试执行以下查询: “从一个o中选择o.two.ID,o.two.three.ID,其中o.ID=1 GROUP BY(o.two.ID,o.two.three.ID)” 但我收到的只是内部服务器错误,sqlgrammaree

我是JPA的新手,所以不要对这个可能愚蠢的问题太过严厉,但谷歌没有给我答案

我使用PostreSQL数据库。假设我有实体一,它与实体二(列表二)有
ManyToOne
关系,而实体二又与实体三(列表三)有
ManyToOne
关系

这三个实体都有自己的ID字段

因此,使用
JPQL
我尝试执行以下查询:
“从一个o中选择o.two.ID,o.two.three.ID,其中o.ID=1 GROUP BY(o.two.ID,o.two.three.ID)”

但我收到的只是
内部服务器错误
sqlgrammareexception
SQLState:42803,字符代码:8。


pg_日志中有一条记录,
o.two.ID
必须在
groupby
中指定,但它已经存在了。

我终于找到了解决方案

我只需要在我的实体中添加
OneToMany
反向关系,因此实体
Two
必须
OneToMany
-与实体
One
相关,实体
Two
必须
OneToMany
与实体
Two相关


谢谢大家

不太确定,我相信在分组方式中不需要括号。也许值得一试。刚才注意到您在SELECT中有
o.two.three.ID
,在groupby中有
o.three.ID
。这些必须匹配。你试过没有组员吗?@Narain Mittal是的,我试过在组员中没有括号,但没有任何改变。对不起,我在写问题的时候把o.three.ID拼错了,实际上是o.three.ID。“我现在要解决这个问题。”是的,我试过不分组。当JPA解析查询时,它没有找到表3。从中只有表1和表2。啊,好旧的反向关系。请将您的答案标记为正确,以便我们知道问题已得到回答:)