我在项目和站点之间有多对多的关系。我正在尝试使用 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。