有人可以建议我如何使用 Criteria API 编写此查询吗?
SELECT CM.REL AS GROUP_ID, COUNT(DISTINCT C.ID) AS IDS_FOUND
FROM PROBLEMS C
INNER JOIN PROBLEMS.ITEM CM
ON C.ID = CM.PROBLEM_ID
WHERE (
CM.REL IS NOT NULL AND CM.REL = 'FF' AND C.ID NOT IN
(SELECT DISTINCT C.ID
FROM PROBLEMS C
INNER JOIN PROBLEMS.ITEM CM
ON C.ID = CM.PROBLEM_ID
WHERE CM.REL IS NOT NULL AND CM.REL = 'RR')
OR
(CM.REL IS NOT NULL AND CM.REL = 'RR')
)
GROUP BY CM.REL
最佳答案
JPQL 和 Criteria API 更好地限制为简单的 CRUD。例如,您的“服务”层组件可能想要查找一堆相关实体并与之交互,操作和保存状态。 JPQL/Criteria API/find() 更适合这种性质的用例。
如果您希望使用复杂查询(典型的报告和演示要求)提取数据,您可能需要考虑在 SQL 查询或 View 上使用 @Immutable 和 @Subselect。
关于java - Criteria API 使用复杂的 where 子句创建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61775206/