【问题标题】:JPQL 'Function' doesn't send operatorJPQL“功能”不发送操作员
【发布时间】:2020-11-16 12:07:17
【问题描述】:

我在 Spring Boot 上使用 EclipseLink 并将此 jpql 放在存储库中:

    @Query("select function('pMonth',p.payDay) ,sum(p.price) " +
            "from FullPayment p where " +
            "group by function('pMonth', p.payDay)"
    )
    List<Object[]> paymentMonthlyHistory();

但它不会发送操作员p.payDay 调用我的自定义函数pMonth。这是数据库错误:

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect number of arguments for FUNCTION adventure_db.pMonth; expected 1, got 0
Error Code: 1318
Call: SELECT pMonth(), SUM(PRICE) FROM panel_fullPayment WHERE ((PAYDATE >= ?) AND (TRANSACTIONAMOUNT >= PRICE)) GROUP BY pMonth()
    bind => [1 parameter bound]

我使用Mysql 作为 DBMS。任何帮助将不胜感激

【问题讨论】:

    标签: mysql jpa eclipselink jpql


    【解决方案1】:

    问题是一个错字。字段名称是payDate,但我写的是p.payDay。我把答案放在这里是为了强调,如果你在这里输入错误的字段名,它不会在启动时显示错误,而是会生成错误的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2021-10-30
      • 2019-12-30
      相关资源
      最近更新 更多