2

我正在尝试返回 HQL 查询的结果,如下所示:

List<Parent> parents = 
currentSession().createQuery("from Parent order by count(children)").list();

这样该列表就按 eadh 父母拥有的孩子的数量排序,
其中孩子是ArrayList<Child>.

我收到以下错误:

HTTP 状态 500 - 请求处理失败;
嵌套异常是 org.springframework.dao.InvalidDataAccessResourceUsageException: Unknown column 'qualified' in 'order Clause';
SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException:'order 子句'中的未知列 'qualified'

这似乎是一个非常简单的查询,并且 count 方法的确切用途是什么,所以我真的不明白为什么它不起作用。另外我不知道“合格”栏的来源或含义。

4

2 回答 2

1

我也遇到过这样的问题。当我在谷歌搜索解决方案时,我在 statckoverflow 中看到了你的问题,现在你可以参考我的案例。

Class AEntity{

    @OneToMany
    Set<BEntity> bList;

}

HQL:from AEntity order by bList.size

希望能帮助像我们这样的人。谢谢。

于 2015-01-19T09:36:51.473 回答
0

在这种情况下,它几乎是我所看到的标准 SQL,所以

"from Parent p left join p.children as pc group by p order by count(pc)"

是我需要的,但是这给出了一个错误,因为它现在返回带有额外列的元组,即孩子的数量。通过在 select 子句中指定我只想返回联接表的父部分来解决此问题。我不确定这里到底发生了什么,但这很有效,并且可以进行很好的逻辑和可读查询。

"select p from Parent p left join p.children as pc group by p order by count(pc)"

简单。

于 2013-09-14T08:53:59.517 回答