2011-10-06 5 views
5

Me pregunto cómo usar los literales de fecha en el lenguaje de consulta de Hibernate. Hice lo siguiente en mi proyecto JPA (como Eclipselink el proveedor) y funciona.Literales de fecha en Hibernate

SELECT m FROM Me m WHERE m.dob <= {d '1984-10-06'} 

Pero esto no funciona cuando cambio Hibernate (V 3.6.7) como el proveedor de mi proyecto JPA.

+4

Lo que usted cita no es válida la sintaxis de la APP (véase la sección JPA2 especificación 4.6.1 - "escape sy JDBC ntax "). Si Hibernate no lo admite, entonces es un error en Hibernate, y debe plantearse de esa manera. – DataNucleus

+0

@DataNucleus Estoy de acuerdo con usted. De acuerdo con la promesa de Hibernate de admitir JPA, deben respaldar esta sintaxis. Pero Hibernate parece ser compatible con la fecha literal como 'aaaa-mm-dd' en lugar de {d 'aaaa-mm-dd'} – siva636

+0

Estamos usando Hibernate ** V3.6.8 ** en un proyecto y esta sintaxis JPA válida no es válida No trabajas ni – Stephan

Respuesta

2

El reference documentation dice:

expresiones utilizadas en la cláusula where incluyen los siguientes:
[...]

  • SQL literales 'foo', 69, 6.66E + 2, '1970-01-01 10: 00: 01.0'
+0

Usar la fecha literal como 'aaaa-mm-dd' funciona para mí (pero esta es una forma no estándar) – siva636