7

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

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

4

2 回答 2

4

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

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

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

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

于 2012-05-22T09:40:28.047 回答
4

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

于 2012-05-22T15:31:27.707 回答