プロジェクトとサイトの間に多対多の関係があります。Criteria API を使用してプロジェクトのサイトのリストを取得しようとしています。私はこれを機能させましたが、クエリは関連するプロジェクトのすべての列も選択します。これは望ましくありません。HQL を使用した同等のクエリと思われるものを作成しましたが、サイトの列のみが選択されます。
var target1 = session.CreateQuery("select s from Site s join s.Projects pr where pr.ProjectId = ?")
.SetInt32(0, projectId)
.List<Site>();
var target2 = session.CreateCriteria<Site>()
.CreateAlias("Projects", "pr")
.Add(Restrictions.Eq("pr.ProjectId", projectId))
.List<Site>();
Criteria API バージョン (target2) を制限してサイト列のみを選択するにはどうすればよいですか? Projections を使用してみましたが、型を投影する方法がありません。この場合、Criteria API を使用する必要があります。