是否可以在 CreateCriteria 语句中使用 MONTH?
NHibernate 是否支持 YEAR 和/或 MONTH?
我有一个 sql 语句,例如 select obs2.Lopnr from Obs obs2 where MONTH(obs2.Datum)=11)
最好的问候
垫子
是否可以在 CreateCriteria 语句中使用 MONTH?
NHibernate 是否支持 YEAR 和/或 MONTH?
我有一个 sql 语句,例如 select obs2.Lopnr from Obs obs2 where MONTH(obs2.Datum)=11)
最好的问候
垫子
ICriteria 支持任意 SQL 作为限制。因此你可以这样做:
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 现在嵌入在您的查询中。
要记住的另一件事是,您在此处使用的名称是映射的属性和类名称,而不是基础列和表名称。
我不相信在标准声明中这是可能的。HQL 查询支持日期函数(年、月、日),因此它们可以以这种方式使用。