Próbuję napisać tej kwerendy przy użyciu Hibernate 3 i Oracle 10.Jak używać bieżącej daty w zapytaniu HQL z bazą danych Oracle?
from Alert alert
where alert.expiration > current_date()
order by alert.priority, alert.updated, alert.name
To tworzenie SQL tak -
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
Dostaję tych wszystkich zwariowanych błędów jak „brakujące prawo nawias ", gdy pozornie jest idealnie zbalansowany nawias.
Dlaczego Oracle się w to wkurza? Czy istnieje lepszy sposób napisania mojego zapytania HQL?
Current_date i Current_timestamp są funkcjami Oracle. Current_date = Sysdate, ale Oracle nie potrzebuje() po wywołaniu funkcji. –
CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP() są również funkcjami Hibernuj HQL. ("Java Persistence With Hibernate") –
wystarczy podać CURRENT_DATE() w zapytaniu, na przykład: "i date = CURRENT_DATE()"; –