Necesito usar las funciones year() y month() en Criteria API para poder expresar una restricción de filtro empresarial. Expresiones comocómo usar las funciones de año() y mes() en NH Criteria API?
cri.Add(Expression.Ge("year(Duration.DateFrom)", Year.Value));
cri.Add(Expression.Le("year(Duration.DateTo)", Year.Value));
obviamente no funcionan - ¿hay alguna solución para lograr esto?
Sé que es totalmente posible en HQL, pero necesito construir la consulta utilizando los criterios del API, porque hay algunos procesos adicionales de procesamiento de la consulta adición de clasificación, paginación, etc ..
solución de muestra que HQL me gustaría volver a escribir a los criterios del 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)";
Esto, desafortunadamente, no es suficiente. La entrada del usuario es año + mes y necesito devolver todos los objetos con Duración intersectando el año + mes. La solución similar en HQL se ve así: var ym = year * 100+ month; var hql = ... (: ym entre 100 * año (f.Duration.DateFrom) + mes (f.Duration.DateFrom) y 100 * año (f.Duration.DateTo) + mes (f.Duration.DateTo) "; No puedo averiguar cómo crear la misma consulta usando la API de Criteria – Buthrakaur
en respuesta a la edición: Tengo una combinación de un año y un mes. La historia del usuario es como:" muéstrame objetos con duración que cubre septiembre de 2009 ". Puedo tener el objeto {DateFrom = new DateTime (2008,1,1), DateTo = new DateTime (2222, 1, 2)} y la entrada del usuario es" septiembre de 2009 "- su sugerencia no funciona aquí . – Buthrakaur