0

MYSQL には、次のクエリがあります。

私のテーブル

    計画中
    -------------------
    プロセス ID (整数)
    project_id (整数)
    期間(日時)
    total_hour (倍精度)

    SELECT プロセス ID、プロジェクト ID、
    sum( if (period="2013-04-01 00:00:00",total_hour,0)) を 4 月として、
    sum( if (period="2013-05-01 00:00:00",total_hour,0)) as may,
    sum( if (period="2013-06-01 00:00:00",total_hour,0)) as 6月
    FROM企画
    GROUP BY process_id,project_id;

このclausule SQLをJPAで使用するために変換する必要がありますか?

4

1 に答える 1

6

SQL から JPQL へ

SELECT p.process_id, p.project_id,
sum( case when p.period="2013-04-01 00:00:00" then p.total_hour else 0 end ) as april,
sum( case when p.period="2013-05-01 00:00:00" then p.total_hour else 0 end ) as may,
sum( case when p.period="2013-06-01 00:00:00" then p.total_hour else 0 end ) as june,
FROM Planning p
GROUP BY p.process_id, p.project_id;

ただし、ネイティブ クエリも引き続き使用できます。

結果セットをマップするには: 結果セットを新しい Bean に手動でマップするか (必要に応じて dozer を使用)、または @SqlResultSetMapping を使用できますJPA ネイティブ クエリを使用して同じ名前の複数の列を選択する方法を参照してください。

于 2013-04-02T14:16:05.090 に答える