JPA - MAX of COUNT or SELECT FROM SELECT

余生颓废 提交于 2019-12-23 09:27:18

问题


I wrote the following query for 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

And I'd like to translate it into JPA (JPQL or criteria query).

I don't know how to make this max(count) thing, and JPA doesn't seem to like the SELECT FROM SELECT...

If anyone has an idea other than native queries (I'll do it for now), it would be great.


回答1:


I haven't checked tha JPA specification, but given that the Hibernate documentation says

Note that HQL subqueries can occur only in the select or where clauses.

I very much doubt that your query can be transformed in a valid JPQL query.

You'll have to keep using this native SQL query.




回答2:


JPA 2.0 JPQL does not support sub-selects in the from clause. You may want to try to rewrite your query, or use a native SQL query.

EclipseLink 2.4 will support sub-selects in the FROM clause,

see,

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



来源:https://stackoverflow.com/questions/10699423/jpa-max-of-count-or-select-from-select

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!