在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) ,但它需要EclipseLink EXTRACT(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实现都支持这样的事情,这与其他答案给出的印象不同