Estoy tratando de escribir esta consulta usando Hibernate 3 y Oracle 10.

from Alert alert
where alert.expiration > current_date()
order by alert.priority, alert.updated, alert.name

Es la creación de SQL como este –

Hibernate: select alert0_.ANNOUNCEMENTS_ID as ANNOUNCE1_1_, alert0_.ANNOUNCEMENT
S_NAME as ANNOUNCE2_1_, alert0_.ANNOUNCEMENTS_PRIORITY as ANNOUNCE3_1_, alert0_.
ANNOUNCEMENTS_EXPIRATION as ANNOUNCE4_1_, alert0_.ANNOUNCEMENTS_UPDATE_DATE as A
NNOUNCE5_1_ from NYC311_ANNOUNCEMENTS alert0_ where (alert0_.ANNOUNCEMENTS_EXPIR
ATION>current_date()) order by  alert0_.ANNOUNCEMENTS_PRIORITY , alert0_.ANNOUNC
EMENTS_UPDATE_DATE , alert0_.ANNOUNCEMENTS_NAME

Me estoy poniendo todas estas loco errores como «falta el paréntesis derecho» cuando no hay al parecer perfectamente equilibrada entre paréntesis.

¿Por qué es Oracle flipando en esto? Hay una mejor manera de escribir mi consulta HQL?

InformationsquelleAutor bpapa | 2009-02-04

2 Comentarios

  1. 48

    No debería ser current_date?

    Hibernate va a traducir para el buen dialecto.

    Yo no encontrar a un verdadero «Hibernate traducir esto para que» la documentación de referencia, pero la expresión, en general, se pueden encontrar en HQL Expresiones para Hibernar 4.3.

    Luego está el La API de Persistencia Java 2.0 (JPA) especificación que define las expresiones para la Java Persistence query language (JPQL) y de su significado, por ejemplo, para current_date:

    4.6.17.2.3 Datetime Funciones functions_returning_datetime:= CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP Las funciones de datetime
    devolver el valor de la fecha actual, hora y fecha y hora en la base de datos
    servidor.

  2. 8

    Es current_date() una función de Hibernación?

    Me gustaría utilizar sysdate lugar. como este:

    where alert.expiration > sysdate 

    O ignorar hora del día:

    where alert.expiration > trunc(sysdate) 
    • Current_date y Current_timestamp son las funciones de Oracle. Current_date = Sysdate pero Oracle no necesita () después de una llamada de función.
    • CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP() son también de Hibernación HQL Funciones. («Persistencia Java Con Hibernate»)
    • acaba de pasar CURRENT_DATE() en la consulta, como por ejemplo: «y date=CURRENT_DATE()»;

Dejar respuesta

Please enter your comment!
Please enter your name here