CreateCriteria和MONTH

时间:2009-02-06 09:44:04

标签: nhibernate criteria

是否可以在CreateCriteria语句中使用MONTH?

NHibernate是否支持YEAR和/或MONTH?

我有一个像sql一样的语句 从Obs obs2中选择obs2.Lopnr,其中MONTH(obs2.Datum)= 11)

最诚挚的问候

2 个答案:

答案 0 :(得分:1)

ICriteria支持arbitrary SQL as a restriction。因此你可以这样做:

var criteria = session.CreateCriteria(typeof(Obs))
    .Add(Expression.Sql("MONTH({alias}.Datum) = ?", 11, NHibernateUtil.Int32);
var results = criteria.List<Obs>();

这将执行一个SQL查询,其中{alias}替换为NHibernate用于Obs表的别名。当然,这会限制您对其他数据库的可移植性,因为SQL现在嵌入在您的查询中。

要记住的另一件事是你在这里使用的名称是映射的属性和类名,而不是基础的列和表名。

答案 1 :(得分:0)

我认为在标准声明中不可能。 HQL查询支持日期函数(年,月,日),因此它们可以这种方式使用。