Nhibernate ограничения в проекции - PullRequest
0 голосов
/ 27 октября 2011

У меня есть запрос, который ищет задания, в которых все назначенные часы не были использованы назначенным техническим специалистом.

В SQL я могу использовать условие Имея для запроса суммы.

SELECT J.Jobid, J.HoursAssigned, SUM(JT.HoursUsed)
FROM Job J
JOIN JobTechnician JT ON JT.JobId = J.JobId
GROUP BY J.Jobid, J.HoursAssigned
HAVING J.HoursAssigned <> SUM(JT.HoursUsed)

Это приводит к набору данных следующего

JOBID | HOURSASSIGNED | HOURSUSED
-----------------------------------
660015 | 10 | 8
660016 | 20 | 18
660017 | 30 | 28
660018 | 40 | 38

Я могу воссоздать запрос как проекцию в Nhibernate, но как мне тогда разместить ограничение, которое в настоящее время существует, в предложении SQL, имеющем предложение?

ICriteria criteria = base.Session.CreateCriteria(typeof(Job));
criteria.CreateAlias("Job.JobTechnicianList", "JobTechnician", JoinType.InnerJoin);

criteria.SetProjection(
    Projections.ProjectionList()
                            .Add(Projections.Property("Job.JobId", "JobId")
                            .Add(Projections.Property("Job.HoursAssigned", "HoursAssigned")
                            .Add(Projections.Sum("JobTechnician.HoursUsed"), "HoursUsed")
                            .Add(Projections.GroupProperty("Job.JobId"))
                            .Add(Projections.GroupProperty("Job.HoursAssigned"))
    );

1 Ответ

0 голосов
/ 27 октября 2011

В прошлый раз, когда я проверял поведение, которое вы хотите, не поддерживается. Обходной путь и состояние проблемы см. HHH-1043 .

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...