22

HQL は別のクエリの結果セットを選択できますか? 例えば:

SELECT COUNT(*) FROM (SELECT * FROM Table)

私はSQLでそれを行うことができますが、HQLで上記のようにしようとすると、構文エラー「予期しないトークン: ( 行1、列22の近く...」

4

4 に答える 4

18

HQL はサブクエリをサポートしていますが、select または where 句でのみ使用できます。あなたが提供する例は、HQL のストレート ステートメントとして記述するのが最適です。例えば:

select count(*) from table t  (where table is the entity name)

クエリに よりも複雑なステートメントが含まれる場合は、(select * from Table)このロジックをビューに入れ、このビューに基づいてエンティティを作成することをお勧めします。

サブセレクトをサポートするデータベースの場合、Hibernate はクエリ内のサブクエリをサポートします。サブクエリは括弧で囲む必要があります (多くの場合、SQL 集計関数呼び出しによって)。相関サブクエリ (外部クエリのエイリアスを参照するサブクエリ) も許可されます。

from DomesticCat as cat
where cat.name not in (
    select name.nickName from Name as name
)
于 2013-04-03T08:36:15.293 に答える
0

必要に応じてサブクエリを使用することはできません。1 つの方法は、この方法で個別に使用することです。

SELECT COUNT(DISTINCT t.id) FROM table t INNER JOIN t.list l
     WHERE t.status = 'ST1' AND l.status = 'ST2'"

内部結合を使用して選択の繰り返しを表現しました

于 2016-06-20T14:51:03.657 に答える