Eclipselink日期范围查询(分组依据)

时间:2011-02-06 10:55:33

标签: date jpa group-by eclipselink

我正在尝试使用Eclipselink JPA 2.0进行日期范围查询,但我尝试的所有内容都失败了。本机SQL-Query看起来像这样:

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

但我不想做本机查询,当在后台使用eclipselink做我需要的所有内容时。我试过这个:

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

其中'year'是日期对象。但是这会返回一个“意外的令牌[(]”。

我也尝试了ExpressionBuilder但遇到了同样的错误(“意外的令牌[(]”)。

是否有关于如何使用Eclipselink进行日期范围查询的教程?

1 个答案:

答案 0 :(得分:2)

在JPQL中没有定义YEAR函数,所以在EclipseLink中你需要使用FUNC函数来定义它。

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

使用表达式,您无法获取错误(“Unexcpected token [(]”),因为没有令牌?或者您是否从数据库中收到此错误?无论如何,Expression定义了getFunction(),还有datePart()可用于一些数据库。