NHibernate HQL日期函数

时间:2010-03-19 09:54:30

标签: nhibernate hql

我正在使用C#和NHibernate编写通知平台。我的查询遇到了困难。

我有一个Customer实体 - 其中包含AssessmentCompleted属性。通知应在认证后21个月发出。因此,我的查询需要包含所有客户AssessmentCompletedDate + 21months < currentDate。我该如何实现这一目标?在NHibernate中有一个月添加方法吗?我需要为每个AssessmentCompletedProperty添加21个月。我的查询需要看起来像:

SELECT new Notification(c.Id, c.Description, c.AssessmentCompleted + 21
            FROM Cusomter c 
            AND c.AssessmentCompleted + 21 <= :EndDate

1 个答案:

答案 0 :(得分:2)

您可以继承您的方言并注册properly功能。 例如,对于MS SQL,您可以注册dateadd函数:

RegisterFunction("dateadd", new SQLFunctionTemplate(NHibernateUtil.Date, "dateadd(?1, ?2, ?3)"));

这样你就可以在HQL和Criteria中使用它了。