在springboot java中使用Hibernate SubQuery问题

aor9mmx1  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(130)

以下是我的查询SELECT DISTINCT c FROM Candidate c INNER JOIN(SELECT ja from JobApplication ja INNER JOIN Job j ON ja.jId=j.idwhere j.companyId = 364)as fillterappli ON fillterappli.caId=c.id
这里是错误:14:18:37.706 [http-nio-8080-exec-1] ERROR o.h.hql.internal.ast.ErrorTracker - line 1:75:意外标记:(

p3rjfoxz

p3rjfoxz1#

我不能说我是对的,但是在研究了你的问题之后,我发现问题可能与INNER JOIN语句中的子查询有关。在JPQL中,你不能在连接的ON子句中使用子查询。相反,你应该使用WHERE子句来根据子查询过滤主查询的结果。我在查询中提供了一个可能有效的小变化:

SELECT DISTINCT c FROM Candidate c WHERE c.id IN (SELECT ja.caId from JobApplication ja INNER JOIN Job j ON ja.jId=j.id where j.companyId = 364) AS filterappli ON filterappli.caId = c.id

在更新的查询中,子查询被移动到WHERE子句中,并且通过仅选择其ID出现在子查询的结果中的候选项来过滤主查询。

2wnc66cl

2wnc66cl2#

这里可能是子查询内部错误,您没有提到要从子查询中选择列名称。
试试这个

SELECT DISTINCT c 
FROM Candidate c 
INNER JOIN (
SELECT ja.caId 
FROM JobApplication ja 
INNER JOIN Job j ON ja.jId = j.id 
WHERE j.companyId = 364
) AS filterappli ON filterappli.caId = c.id

除了ja.caId,您还可以指定要选择列名。

相关问题