在jpa中包含月,年,日期函数
我想在JPA中执行此查询。但是我在执行此查询时遇到错误。如何在JPA中使用Month(),Year()我们可以在本机SQL Query中使用它们。但是如何使用它? 请帮帮我。谢谢!
select model from IptExchangeratelines model where model.iptExchangerate.id=:id and " + " month(model.currencyExchangeDate)=:month and year(model.currencyExchangeDate)=:year
很少有JPA实现具有对日期/时间函数的内置支持。
-
的EclipseLink
EclipseLink支持EXTRACT,允许从日期/时间中提取任何数据库支持的日期/时间部分值。 EXTRACT函数与数据库无关,但需要数据库支持。
EXTRACT(YEAR, model.currencyExchangeDate)
,但它需要EclipseLinkEXTRACT(YEAR, model.currencyExchangeDate)
FUNC允许从JPQL调用数据库函数。 它允许调用JPQL中不直接支持的任何数据库函数。
要调用DB函数
MyFunc(a, b, c)
使用FUNC('MyFunc', a, b, c)
。您可以尝试
FUNC('YEAR', currencyExchangeDate)
来调用’YEAR’函数。 -
过冬
在HQL中,您可以使用日期函数
YEAR(date)
,MONTH(date)
,DAY(date)
来提取所需的详细信息。 支持的其他时间function是HOUR(date)
,MINUTE(date)
,SECOND(date)
。 -
Criteria API
CriteriaBuilder #function():为执行数据库函数创建一个表达式。
CriteriaQuery
cq = cb.createQuery(IptExchangeratelines.class); Root exRateLine = cq.from(IptExchangeratelines.class); cq.where(cb.equal(cb.function("year", Integer.class,
exRateLine.get(exRateLine_.currencyExchangeDate)), year) .and(cb.equal(cb.function("month", Integer.class, exRateLine.get(exRateLine_.currencyExchangeDate)), month)));
DataNucleus JPA jhas内置支持YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,以及用于调用RDBMS中的本机函数的JPA 2.1标准“FUNCTION”。
根据我的经验,所有JPA实现都支持这样的事情,这与其他答案给出的印象不同