2012-05-22 11 views
6

schrieb ich die folgende Abfrage für MySQL:JPA - MAX von COUNT oder SELECT FROM SELECT

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 

Und ich möchte es in JPA (JPQL oder Kriterien Abfrage) übersetzen.

Ich weiß nicht, wie diesen max zu machen (count) Sache, und JPA scheint nicht die SELECT FROM SELECT zu mögen ...

Wenn jemand eine Idee anders als nativer Abfragen hat (I‘ Ich werde es jetzt tun), es wäre großartig.

Antwort

3

Ich habe nicht tha JPA-Spezifikation geprüft, aber wenn man bedenkt, dass die Hibernate documentation sagt

Beachten Sie, dass HQL Subqueries nur in der Auswahl auftreten können oder wo Klauseln.

Ich bezweifle sehr, dass Ihre Abfrage in eine gültige JPQL-Abfrage umgewandelt werden kann.

Sie müssen weiterhin diese native SQL-Abfrage verwenden.

+0

Es ist keine gültige JPQL Abfrage überhaupt, es ist nativer SQL.My Ziel ist es, zu übersetzen in JPQL zu vermeiden native Abfragen, wenn es möglich ist. Wenn nicht, kann ich damit leben, wollte nur wissen. – Bob

+0

Ah, OK. Meine Antwort lautet also: Sie werden es nicht in JPQL übersetzen können. –

+0

Ja, danke trotzdem. – Bob