gpt4 book ai didi

java - 替换 jpa 中的月、年、日期函数

转载 作者:行者123 更新时间:2023-12-01 14:05:48 24 4
gpt4 key购买 nike

我想在 JPA 中执行此查询。但是在执行此查询时出现错误。如何在 JPA 中使用 Month(),Year()
我们可以在 native SQL 查询中使用这些。但是如何使用呢?
请帮助我。提前致谢!!

 select model from IptExchangeratelines model where model.iptExchangerate.id=:id and " +
" month(model.currencyExchangeDate)=:month and year(model.currencyExchangeDate)=:year

最佳答案

很少有 JPA 实现具有对日期/时间函数的内置支持。

  • EclipseLink

    EclipseLink supports EXTRACT allowing any database supported date/time part value to be extracted from the date/time. The EXTRACT function is database independent, but requires database support.


    EXTRACT(YEAR, model.currencyExchangeDate) , 但它需要 EclipseLink 2.4.x

    FUNC allows for a database function to be call from JPQL. It allows calling any database functions not supported directly in JPQL.



    调用数据库函数 MyFunc(a, b, c)使用 FUNC('MyFunc', a, b, c) .

    你可以试试FUNC('YEAR', currencyExchangeDate)调用“YEAR”函数。
  • hibernate

    在 HQL 中,您可以拥有日期函数 YEAR(date) , MONTH(date) , DAY(date)提取所需的详细信息。
    其他支持的时间函数是 HOUR(date) , MINUTE(date) , SECOND(date) .
  • 标准 API

    CriteriaBuilder#function() : Create an expression for the execution of a database function.


    CriteriaQuery<IptExchangeratelines> cq = cb.createQuery(IptExchangeratelines.class);
    Root<IptExchangeratelines> 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)));
  • 关于java - 替换 jpa 中的月、年、日期函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802989/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com