如何在JPA-Hibernate中执行数据透视查询?

Mau*_*hes 0 hibernate jpa pivot-table

在MYSQL中,我有以下查询:

我的桌子

    规划
    -------------------
    process_id(int)
    project_id(int)
    期间(日期时间)
    total_hour(双精度)

    选择process_id,project_id,
    sum(if(period =“ 2013-04-01 00:00:00”,total_hour,0))为四月,
    sum(如果(period =“ 2013-05-01 00:00:00”,total_hour,0)尽可能
    sum(if(period =“ 2013-06-01 00:00:00”,total_hour,0))作为六月
    从计划
    GROUP BY process_id,project_id;

我需要转换此条款SQL以便在JPA中使用?

wil*_*ome 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;
Run Code Online (Sandbox Code Playgroud)

但是您仍然可以使用本机查询。

要映射结果集:可以将结果集手动映射到新bean(如果愿意,请使用dozer),或者可以使用一些@SqlResultSetMapping请参见如何使用JPA本机查询选择具有相同名称的多个列?