2011-02-06 132 views
1

我想用Eclipselink JPA 2.0做一個日期範圍查詢,但是我嘗試的所有事情都失敗了。本機SQL查詢應該是這樣的:Eclipselink日期範圍查詢(與分組)

SELECT booked FROM household_bookings WHERE YEAR(booked) = 2011 GROUP BY YEAR(booked) 

但我不想做一個本地查詢,在後臺有EclipseLink的時候做的一切,我需要我。我嘗試這樣做:

SELECT b FROM Booking b WHERE YEAR(b.booked) = '" + year + "' 

其中 '年' 是一個Date對象。但是,這會返回一個「意外令牌[(]」。

我也試過的ExpressionBuilder但遇到同樣的錯誤(「意外令牌[(]」)。

是否有關於如何做日期的任何教程與EclipseLink的範圍查詢?

回答

2

有一個在JPQL中沒有定義YEAR功能,故在的EclipseLink您需要使用FUNC功能來定義這個。

"SELECT b FROM Booking b WHERE FUNC('YEAR', b.booked) = '" + year + "'" 

使用表達式,你不能讓錯誤(「Unexcpected令牌[()「),因爲沒有令牌?或者你沒有從數據庫中得到這個錯誤?無論如何,Expression定義了getFunction(),還有datePart()在一些數據庫上可用。