HQL は別のクエリの結果セットを選択できますか? 例えば:
SELECT COUNT(*) FROM (SELECT * FROM Table)
私はSQLでそれを行うことができますが、HQLで上記のようにしようとすると、構文エラー「予期しないトークン: ( 行1、列22の近く...」
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
)
必要に応じてサブクエリを使用することはできません。1 つの方法は、この方法で個別に使用することです。
SELECT COUNT(DISTINCT t.id) FROM table t INNER JOIN t.list l
WHERE t.status = 'ST1' AND l.status = 'ST2'"
内部結合を使用して選択の繰り返しを表現しました