JPA — МАКСИМАЛЬНОЕ количество COUNT или ВЫБЕРИТЕ ИЗ ВЫБРАННОГО

Я написал следующий запрос для 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...

Если у кого-то есть идея, кроме нативных запросов (сейчас сделаю), было бы здорово.


person Bob    schedule 22.05.2012    source источник


Ответы (2)


Я не проверял спецификацию JPA, но учитывая, что документация Hibernate говорит

Обратите внимание, что подзапросы HQL могут встречаться только в предложениях select или where.

Я очень сомневаюсь, что ваш запрос можно преобразовать в действительный запрос JPQL.

Вам придется продолжать использовать этот собственный SQL-запрос.

person JB Nizet    schedule 22.05.2012
comment
Это вообще не действительный запрос JPQL, это собственный SQL. Моя цель - перевести его в JPQL, избегая собственных запросов, если это возможно. Если это не так, я могу жить с этим, просто хотел знать. - person Bob; 22.05.2012
comment
Ах хорошо. Итак, мой ответ: вы не сможете перевести его на JPQL. - person JB Nizet; 22.05.2012

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

person James    schedule 22.05.2012