2009-12-03 6 views
3

HQL과 OUTER JOIN을 사용하여 쿼리를 작성하려고하는데 그냥 작동하지 않습니다. 다음 매핑 이제HQL 쿼리에서 외부 조인 사용

<class name="Parent"> 
    <id name="id" type="integer"> 
     <generator class="native" /> 
    </id> 
</class> 

<class name="Child"> 
    <id name="id" type="integer"> 
     <generator class="native" /> 
    </id> 
    <many-to-one name="parent"/> 
</class> 

나는 "모든 부모의 목록과 부모 자녀의 양을 얻을 싶습니다를 생각해 보자. 나는 두 아이들과 전혀 아이들과 함께 한 부모와 부모가 가정하자. I 가능하지 않는 것 그러나 '전혀 문제가되지 않습니다 일반 SQL을 사용하여

+-------------------+ 
| parent | children | 
+--------+----------+ 
| 1  | 2  | 
| 2  | 0  | 
+--------+----------+ 

같은 출력이, 내가

SELECT p.id as parent, count(c.id) as children from parents p LEFT OUTER JOIN children c on c.parent_id = p.id group by p.id; 

처럼 뭔가를하고이 출력을 얻을 수 있습니다 기대 거라고 HQL을 사용하여 내가 가지고 있지 않은 OUTER JOIN을 사용할 때 경로 (부모로부터 자식으로)이 필요합니다 (또한 추가하고 싶지 않음).

HQL을 사용하여 쿼리를 실행하는 방법이나 실제로는 - 나는 그것을 믿을 수 없다 - 최대 절전 모드 기능이 없다?

답변

3

쿼리를 전환하면 도움이 될 것입니다

SELECT p.id as parent, count(c.id) as children from children c right outer join c.parent p group by p.id;