Tôi đang cố gắng để viết truy vấn này sử dụng Hibernate 3 và Oracle 10.Làm cách nào để sử dụng ngày hiện tại trong truy vấn HQL với cơ sở dữ liệu Oracle?
from Alert alert
where alert.expiration > current_date()
order by alert.priority, alert.updated, alert.name
Nó tạo SQL như thế này -
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
tôi nhận được tất cả các lỗi lập dị như "mất tích ngay ngoặc đơn "khi có dấu ngoặc đơn hoàn toàn cân bằng.
Tại sao Oracle lại lo ngại về điều này? Có cách nào tốt hơn để viết truy vấn HQL của tôi?
Current_date và Current_timestamp là các hàm Oracle. Current_date = Sysdate nhưng Oracle không cần() sau một cuộc gọi hàm. –
CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP() cũng là Hibernate HQL Functions. ("Java Persistence With Hibernate") –
chỉ cần vượt qua CURRENT_DATE() trong truy vấn của bạn như ví dụ: "và date = CURRENT_DATE()"; –