2009-10-28 29 views
7

Có ai có thể chỉ cho tôi một ví dụ về cách sử dụng CURRENT_DATE trong truy vấn JPA không?Ví dụ về việc sử dụng CURRENT_DATE trong truy vấn JPA

CURRENT_DATE được chỉ định trong JPA nhưng tôi chưa thể làm cho nó hoạt động. Tôi luôn nhận được ngoại lệ unexpected token [CURRENT_DATE]. Vì nó được chỉ định trong JPA, tất cả các nhà cung cấp phải tuân thủ đúng không?

Tôi đang sử dụng EclipseLink 2.0 BTW.

Trả lời

12

Nó có thể được sử dụng như sau:

Query query = manager 
    .createQuery("SELECT c FROM CITIES c WHERE c.founded = CURRENT_DATE"); 
for (Object city : query.getResultList()) { 
    System.out.println(city); 
} 

... nơi thành lập là một loại thời gian:

@Column(name = "FOUNDED") 
    @Temporal(TemporalType.DATE) 
    private Date founded = new Date(); 

Không phải là một ví dụ tuyệt vời, nhưng bạn sẽ có được ý tưởng. Tôi đang sử dụng Eclipselink 1.1.2

+0

Bạn thực sự thân thiết. Tôi nhận được điều đó ngay trước khi nhìn thấy câu trả lời của bạn. Tôi đang cố gắng làm điều gì đó như Chọn x từ Bảng x, trong đó x.id = 1 và (x.lastModified-CURRENT_DATE)> = 365 Tôi cần sử dụng phép tính vào các ngày. – javydreamercsw

+0

Có thể thực hiện số học datetime bằng JPA không? Bạn sẽ phải có một số chức năng để biến sự khác biệt thành ngày (và không phải là phút hoặc tháng hoặc thiên niên kỷ, v.v.). Tôi không biết về bất kỳ chức năng nào như vậy. Thực hiện số học ngày tháng trong Java và sau đó chỉ cần chọn so sánh với phạm vi kết quả. – McDowell

+0

Tôi đoán đây là một thiếu sót hoặc thiếu chức năng của JPA. Tôi sẽ phải làm theo cách đó. Cảm ơn! – javydreamercsw

3

Nếu bạn đang sử dụng Expression Framework, có phương pháp Expression currentDateDate() trên đối tượng Expression (org.eclipse.persistence.expressions.Expression).

+0

Tôi sẽ cần thử nhưng tôi đã thực sự cố gắng tránh sử dụng các truy vấn JPA chung để tránh sự phụ thuộc vào nhà cung cấp kiên trì. – javydreamercsw

4

Câu trả lời cho câu hỏi này đã truy lục các giá trị thông qua JPA và sau đó thực hiện phép toán bằng Java thuần.

Các vấn đề liên quan