【问题标题】:Criteria API create query with complex where clauseCriteria API 使用复杂的 where 子句创建查询
【发布时间】:2020-05-13 12:54:08
【问题描述】:

有人可以建议我如何使用 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

【问题讨论】:

  • 您遇到的任何特定部分有问题?
  • @OHGODSPIDERS 我在 where 子句中苦苦挣扎

标签: java jpa criteria criteria-api


【解决方案1】:

JPQL 和 Criteria API 最好仅限于简单的 CRUD。例如,您的“服务”层组件可能想要查找并与一堆相关实体交互、操作和保存状态。 JPQL/Criteria API/find() 更适合这种性质的用例。

如果您希望使用复杂查询(典型的报告和演示要求)提取数据,您可能需要考虑使用 @Immutable 和 @Subselect 而非 SQL 查询或视图。

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多