プロジェクション内のNhibernateの制限

割り当てられたすべての時間が割り当てられた技術者によって使用されていないジョブを探すクエリがあります。

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 having節に現在存在する制限をどのように配置するのですか?

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 答え

あなたが望む動作をチェックした最後の時間はサポートされていません。回避策と問題の状況については、 HHH-1043 を参照してください。

0
追加された