1

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

NHibernate 是否支持 YEAR 和/或 MONTH?

我有一个 sql 语句,例如 select obs2.Lopnr from Obs obs2 where MONTH(obs2.Datum)=11)

最好的问候

垫子

4

2 回答 2

1

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 现在嵌入在您的查询中。

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

于 2009-02-08T21:28:57.690 回答
0

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

于 2009-02-06T16:20:09.707 回答