2011-02-06 95 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()在一些数据库上可用。