如何使用 JPA 编写这种复杂的连接查询,我在下面指出的一些语法不适用于 JPA。我已经使用它们来演示应该构建 sql 查询的方式,对此深表歉意。
SELECT Result1.name1, Result1.count1, Result2.name2, Result2.count2 FROM (
SELECT
taskOne.user.name AS name1,
COUNT(taskOne.taskId) AS count1
FROM
Task AS taskOne
INNER JOIN
taskOne.defect AS defectOne
WHERE (
defectOne.defId = taskOne.defect.defId
AND
taskOne.taskCategory.tcaId = 1
)
GROUP BY
taskOne.user.usId
) AS Result1
FULL JOIN (
SELECT
taskTwo.user.name AS name2,
COUNT(taskTwo.taskId) AS count2
FROM Task AS taskTwo
INNER JOIN taskTwo.defect AS defectTwo
WHERE (
defectTwo.defId = taskTwo.defect.defId
AND
taskTwo.taskCategory.tcaId = 2
)
GROUP BY taskTwo.user.usId
)
AS Result12
WHERE Result1.name1 = Result12.name2
最佳答案
选择对象需要 JPQL。您的查询似乎非常复杂,我建议使用 native SQL 查询或对其进行简化。
JPQL 不支持 from 子句中的子选择。
关于java - 如何使用 JPA 编写复杂的连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992004/