1
我在Project和Site之間有多對多的關係。我正在嘗試使用Criteria API檢索項目的網站列表。我有這個工作,但查詢還選擇了所有相關項目的列,我不想要。我寫了我認爲是使用HQL的等價查詢,並且它只選擇「站點」列。查詢多對多而無需使用Criteria API選擇所有對象
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)僅選擇Site列?我嘗試使用投影,但沒有方法來投影類型。在這種情況下,我必須使用Criteria API。