残念ながら、いいえ、派生テーブルは現在HQLでは機能しません。たとえば、次のように機能します。
List<int> result =
nHSession.CreateQuery( @"select distinct Id from User u")
.List<int>().ToList();
...以下はこの例外をスローします:
タイプ'Antlr.Runtime.NoViableAltException'の例外がスローされました。行1、列24の近く[(S2.BP.Model.User uからuを選択)から個別のIDを選択]
List<int> result = nHSession.CreateQuery(
@"select distinct Id from (select u from User u)")
.List<int>().ToList();
フォールバックは、raw sqlを含む名前付きクエリを作成するか、ストアドプロシージャを作成して、次のように名前付きクエリを介して呼び出すことです。
List<int> result = nHSession.GetNamedQuery("spUserIds")
.SetInt32("id", 3)
.List<int>().ToList();