Criteria API 用复杂的where子句创建查询

问题描述 投票:0回答:1

谁能建议我如何使用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
java jpa criteria criteria-api
1个回答
0
投票

JPQL和Criteria API最好限制在简单的CRUD上。例如,你的 "服务 "层组件可能想找到并与一堆相关实体交互,操作和保存状态。JPQLCriteria APIfind()更适合于这种性质的用例。

如果你想使用复杂的查询来提取数据(典型的报告和演示要求),你可能想考虑使用@Immutable和@Subselect来代替SQL查询或视图。

© www.soinside.com 2019 - 2024. All rights reserved.