0 votes

Conversion d'une requête SQL avec sous-sélection dans la section select en HQL

J'ai des difficultés à convertir une requête SQL native en HQL. La requête est à peu près la suivante :

select count(*)
, sum(select count(*) from employee e where e.company_id=c.id)) 
from company c where c.id = someID

La première valeur renvoyée est nombre d'entreprises , deuxième - nombre de salariés pour l'entreprise spécifiée.

Par exemple, je dois obtenir ces deux valeurs pour l'entreprise avec id=someID.

Le problème est que Hibernate ne prend pas en charge les sous-sélections dans la section SELECT, seulement dans WHERE - par spécification.

En fait, je peux :

1) utiliser une requête native pour passer par l'EntityManager

2) faire de même en divisant cette requête "complexe" en deux requêtes SQL plus simples

Mais peut-être existe-t-il des méthodes plus pratiques pour réaliser une requête initiale en HQL ? - Ceci est une question.

Nous vous remercions.

0voto

davek Points 12514

Cela pourrait fonctionner :

select count(c.*) as count_companies
     , c as count_emp
from company c 
inner join 
(
     select company_id, count(*) as c
     from employee 
     where employee.company_id = someID 
     group by company_id
) e
on e.company_id=c.id
group by c.id

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X