2013-04-02 3 views
0

В MYSQL У меня есть этот запрос:
Как выполнить опорные запросы в JPA-Hibernate?

Мой стол

 

    planning 
    ------------------- 
    process_id (int) 
    project_id (int) 
    period (datetime) 
    total_hour (double) 

 

    SELECT process_id, project_id, 
    sum(if (period="2013-04-01 00:00:00",total_hour,0)) as april, 
    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 june 
    FROM planning 
    GROUP BY process_id,project_id; 

Мне нужно преобразовать этот clausule SQL для использования в JPA?

ответ

4

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; 

Но вы все еще можете использовать собственные запросы тоже.

Чтобы сопоставить набор результатов: вы можете отобразить вручную ваш ResultSet на новый боб (используйте бульдозер, если вы предпочитаете), или вы можете использовать некоторые @SqlResultSetMapping см How to select multiple columns with the same name using JPA native query?

+0

Как добавить результат устанавливается на новый объект (Пример: PlanningExtractBean.class), потому что источник происхождения Bean отличается от набора результатов. –

+0

Я обновил ответ. – willome

+0

Спасибо. Пример был правильным для моей системы. –

Смежные вопросы