У меня есть отношения многие ко многим между Проектом и Сайтом. Я пытаюсь получить список сайтов для проекта, используя 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>();
Как ограничить версию API критериев (target2), чтобы выбирать только столбцы сайта? Я пытался использовать проекции, но нет способа проецировать тип. Я должен использовать Criteria API в этом случае.