1

特定のアカウントで行われたトランザクションの数を集計 (合計) する hql クエリを実行しようとしていますが、where 句に特定のアカウント フィルター (where account = :account) があるため、グループは必要ありません。

ただし、特定の値よりも小さい/大きい場合にのみ集計値を返したいと思います。「group by」なしでwhere句の後に「having」を追加すると、エラーが発生します-予期しないトークン:having

ネイティブSQLで、グループ化せずに「having」を追加することに成功しました

hqlで動作させる方法についてのアイデアはありますか?

どうもありがとう

4

3 に答える 3

0

データベースでグループ化された列とグループ化されていない集計されていない列を混在させることができない理由は、グループ化されていない/集計されていない列の場合、グループごとに1つの行の値を選択する必要があるが、その方法がわからないためです1 つを選択します。

気にしない場合は、そのままにしておくことができます。それらがすべて同じであるため問題にならない場合は、それらでグループ化することもできます.

于 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 に答える