JPQL 'Function' 不发送运算符
JPQL 'Function' doesn't send operator
我在 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。任何帮助将不胜感激
问题是错字。字段名称是 payDate
但我写了 p.payDay
。我把答案放在这里是为了强调,如果你在这里输入了错误的字段名,它不会在启动时向你显示错误,但会生成错误的查询。
我在 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。任何帮助将不胜感激
问题是错字。字段名称是 payDate
但我写了 p.payDay
。我把答案放在这里是为了强调,如果你在这里输入了错误的字段名,它不会在启动时向你显示错误,但会生成错误的查询。