我需要在 Criteria API 中使用 year() 和 month() 函数来表达业务过滤器约束。像这样的表达
cri.Add(Expression.Ge("year(Duration.DateFrom)", Year.Value));
cri.Add(Expression.Le("year(Duration.DateTo)", Year.Value));
显然不起作用-有什么解决方案可以实现吗?
我知道这在 HQL 中是完全可能的,但我需要使用条件 API 构建查询,因为有一些额外的进程处理查询添加排序、分页等。
我想重写为 Criteria API 的示例 HQL 解决方案:
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)";