JPA - MAX的COUNT或SELECT FROM SELECT

时间:2012-05-22 09:36:48

标签: select jpa count subquery max

我为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 ......

如果有人的想法不是本机查询(我现在就做),那就太好了。

2 个答案:

答案 0 :(得分:4)

我没有检查JPA规范,但考虑到Hibernate documentation

  

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

我非常怀疑您的查询可以在有效的JPQL查询中进行转换。

您必须继续使用此本机SQL查询。

答案 1 :(得分: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