【问题标题】:JPA - MAX of COUNT or SELECT FROM SELECTJPA - MAX of COUNT 或 SELECT FROM SELECT
【发布时间】:2012-05-22 23:31:27
【问题描述】:

我为 MySQL 编写了以下查询:

SELECT subquery.t1_column1, 
    subquery.t2_id, 
    MAX(subquery.val)
FROM (
    SELECT t1.column1 as t1_column1, 
        t1.id_t2 AS t2_id,
        count(1) AS val
    FROM table1 t1
    INNER JOIN table2 t2
    ON t2.id = t1.id_t2
    GROUP BY t1.id_t2
) subquery
GROUP BY t1_column1

我想把它翻译成 JPA(JPQL 或条件查询)。

我不知道如何制作这个 max(count) 东西,而且 JPA 似乎不喜欢 SELECT FROM SELECT...

如果有人有原生查询以外的想法(我现在就去做),那就太好了。

【问题讨论】:

    标签: select jpa count subquery max


    【解决方案1】:

    我没有检查过 JPA 规范,但鉴于 Hibernate documentation

    请注意,HQL 子查询只能出现在 select 或 where 条款。

    我非常怀疑您的查询是否可以转换为有效的 JPQL 查询。

    您必须继续使用这个原生 SQL 查询。

    【讨论】:

    • 这根本不是一个有效的 JPQL 查询,它是本机 SQL。我的目标是将它翻译成 JPQL,如果可能的话,避免使用本机查询。如果不是我可以忍受,只是想知道。
    • 啊,好的。所以我的回答是:你不能把它翻译成 JPQL。
    【解决方案2】:

    JPA 2.0 JPQL 不支持 from 子句中的子选择。您可能想尝试重写您的查询,或使用原生 SQL 查询。

    EclipseLink 2.4 将支持 FROM 子句中的子选择,

    看,

    http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#Sub-selects_in_FROM_clause

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-16
      • 2014-12-12
      • 2014-06-17
      • 2011-03-06
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多