我需要在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