NHibernate-beperkingen binnen een projectie

Ik heb een vraag die naar banen zoekt waarbij alle toegewezen uren niet zijn gebruikt door de toegewezen technicus.

In SQL kan ik een hebbende clausule gebruiken om tegen de som te vragen.

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)

Dit resulteert in een dataset van het volgende

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

Ik kan de query opnieuw maken als een projectie in Nhibernate, maar hoe plaats ik de beperking die momenteel bestaat in de SQL having-clausule?

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"))
    );
0

1 antwoord

De laatste keer dat ik het gewenste gedrag controleerde, wordt niet ondersteund. Voor een oplossing en status van het probleem, zie HHH-1043 .

0
toegevoegd