是否可以在CreateCriteria-statement中使用MONTH?
NHibernate是否支持年和/或月?
我有一个类似select OBS.Lopnr from Obs obs2 where MONTH(OBS2.Datum)=11的sql语句。
致以最诚意的问候
垫子
发布于 2009-02-08 21:28:58
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>();这将执行一个{别名}替换为NHibernate用于Obs表的别名的SQL查询。当然,这限制了您对其他数据库的可移植性,因为SQL现在嵌入到您的查询中。
另一件要记住的事情是,这里使用的名称是映射的属性和类名,而不是底层的列名和表名。
发布于 2009-02-06 16:20:10
我认为这在标准声明中是不可能的。在HQL查询中支持日期函数(年、月、日),因此可以通过这种方式使用它们。
https://stackoverflow.com/questions/519699
复制相似问题