我需要在Criteria API中使用year()和month()函数来表达业务过滤器约束。像如何在NH Criteria API中使用year()和month()函数?
cri.Add(Expression.Ge("year(Duration.DateFrom)", Year.Value));
cri.Add(Expression.Le("year(Duration.DateTo)", Year.Value));
明显表达式不工作 - 没有任何解决方案是如何实现这一目标?
我知道这是完全有可能的HQL,但我需要使用标准的API来构建查询,但由于是一些附加的工艺处理查询添加排序,分页等。
样品HQL解决方案我想重写Criteria API:
var ym = year * 100 + month;
var hql = ...(:ym between 100 * year(f.Duration.DateFrom) + month(f.Duration.DateFrom) and 100 * year(f.Duration.DateTo) + month(f.Duration.DateTo)";
这不幸是不够的。用户输入是年份+月份,我需要返回持续时间与年份+月份相交的所有对象。 HQL中的Simmilar解决方案如下所示: var ym = year * 100 + month; var hql = ...(:ym在100 *年(f.Duration.DateFrom)+月份(f.Duration.DateFrom)和100 *年份(f.Duration.DateTo)+月份(f.Duration.DateTo) “; 我无法弄清楚如何使用Criteria API创建相同的查询 – Buthrakaur 2009-04-27 14:04:50