Im creando un criterio de hibernación que verificará si un contrato es/ha sido válido durante un año. El contrato tiene una fecha de inicio y finalización como un campo de fecha estándar.Extracción de criterios de Hibernate Año a partir de la fecha
Así está utilizando para SQL Server, yo creo que algo en las líneas de este SQL:
SELECT * FROM CONTRACT WHERE YEAR(startDate) <= ? AND YEAR(endDate) >= ?
El signo de interrogación es el año dada como un entero.
Entonces, ¿cómo transformar esto en un criterio de hibernación?
int year = 2011; //Just a testyear for example purposes.
DetachedCriteria criteria = DetachedCriteria.forClass(Contract.class)
.add(Restrictions.le("startDate", year))
.add(Restrictions.ge("endDate", year));
Como se puede ver, me falta la parte en la que puedo convertir la fecha de un año para que pueda ser comparado. Naturalmente, mi código no se ejecuta como es.
¿Alguna sugerencia sobre cómo obtener los resultados deseados?
Solución 1 es una buena alternativa limpia, aunque el método 'toEndOfYear' debe sumar 1 al año como pasó a 'cal.set', de lo contrario obtendrá el final del año anterior – Numeron