1

我试图运行一个 hql 查询,该查询汇总(总和)在特定帐户上进行的交易数量,我不需要 group by,因为我的 where 子句具有特定的帐户过滤器(其中 account = :account)

但是,我确实希望仅在聚合值小于/大于某个给定值时才返回聚合值。当我在没有'group by'的where子句之后添加'have'时,我得到一个错误 - 意外标记:有

在本机 sql 中,我成功添加了没有 group by 的“有”

关于如何使其与 hql 一起工作的任何想法?

多谢

4

3 回答 3

0

数据库不允许您将分组列与非分组和非聚合列混合的原因是,对于非分组/非聚合列,它必须为每组选择一行的值,但不知道如何选择一个。

如果你不在乎,那么你可以把它放在一边,如果没关系,因为它们都是一样的,你也可以按它们分组。

于 2012-09-27T16:36:25.787 回答
0

它不是 hql,但如果您有本机查询,请像这样运行它:

Query query = session.createSQLQuery("select, *** ,... blah blah")
//set If you need
query.setParameter("myparam", "val"); 
List result = query.list();
于 2012-09-27T16:38:00.170 回答
-1

在我看来,这是无稽之谈。“拥有”是针对“分组依据”结果的条件完成的。如果你不分组,那么它没有多大意义。

我会说HQL做不到。可能 Hibernate 程序员没有想到这种情况,因为他们认为它不重要。

无论如何,你不需要它。

如果它是一个简单的查询,那么您可以在您的 java 代码中决定是想要结果还是不需要它。

如果它在子选择中,那么您可以使用主选择中的 where 条件来解决问题。

如果您认为确实有必要,请您举一个更具体的例子。

于 2012-09-27T16:40:46.907 回答