2015-10-14 24 views
0

Я новичок в спящем режиме. Я использую hibernate в своем проекте, но я застрял в одном месте. У меня есть две таблицы базы данных, которая похожа на следующее:Hibernate group по критериям

Первая таблица

Category 
id | name 
--------- 
1 | cat1 
2 | cat2 

Второй стол

Product 
id | categoryid | name 
---------------------- 
1 | 1   | p1 
2 | 1   | p2 

Что я хотел добиться того, чтобы получить набор результатов, содержащий категорию и количество продукта в каждая категория.

categoryid | productcount 
1   | 2 
2   | 0 

В настоящее время я могу это сделать, используя встроенную поддержку Hibernate.

SQL:

SELECT c.id, CASE WHEN x.count IS NULL THEN 0 ELSE x.count END AS productcount 
FROM category AS c LEFT OUTER JOIN 
(
    SELECT categoryid,count(*) AS count 
    FROM product 
    GROUP BY categoryid 
) AS x 
ON x.categoryid = c.id 

Пожалуйста, помогите мне достичь этого, используя критерии Hibernate Благодарности

+0

Вы просто спрашиваете, как преобразовать эти критерии SQL в Hibernate? HQL/JPQL/критерии (Hibernate или JPA), все они не поддерживают оператор sub select в предложении 'JOIN' или' FROM'. – Tiny

+0

@Tiny Должен ли я заключить, что это невозможно с использованием критериев – Shadow

+0

Я рекомендую использовать Spring Data по спящему режиму, это сделает вашу жизнь намного проще. не тратьте время на написание таких общих запросов! – azerafati

ответ

0

Я думаю, вы должны использовать хранимую процедуру и что вы хотите в итоге объявить его как OUT параметр. Этот учебник поможет вам написать или вызвать хранимую процедуру в запросе на спящий режим http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/

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