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 クエリを使用することをお勧めします。

TopLink 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 に答える