是否可以在CreateCriteria语句中使用MONTH?
NHibernate是否支持YEAR和/或MONTH?
我有一个像sql一样的语句 从Obs obs2中选择obs2.Lopnr,其中MONTH(obs2.Datum)= 11)
最诚挚的问候
垫
答案 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查询支持日期函数(年,月,日),因此它们可以这种方式使用。