2009-12-03 62 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> 

现在我的“D希望得到所有家长的名单和父母子女的数量。假设我有一个家长带着两个孩子和父母一方无子女的。我倒是希望像使用普通的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 a需要路径从父母到孩子使用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;