我有一个关于JPA查询的问题。

我越来越

子表达中缺少右括号。
查询包含一个畸形的结尾。

我的查询看起来像这样:

String query = (new StringBuilder()).append("SELECT COUNT(data.amount) FROM ").append("FinanceTransactionData").append(" data WHERE (data.cusId = :cusId AND data.dateOfIssue > (TO_DATE('2013-11-02','yyyy-mm-dd')) AND data.dateOfIssue < (TO_DATE('2013-12-29','yyyy-mm-dd'))").toString();

我正在尝试:

String query = (new StringBuilder()).append("SELECT COUNT(data.amount) FROM ").append("FinanceTransactionData").append(" data WHERE data.cusId = :cusId AND data.dateOfIssue BETWEEN TO_DATE('2013-11-02','yyyy-mm-dd') AND TO_DATE('2013-12-29','yyyy-mm-dd')").toString();

在DB中,查询有效。

有帮助吗?

解决方案

TO_DATE 不是JPQL函数,请尝试使用参数

String query = "SELECT COUNT(data.amount) FROM FinanceTransactionData data "
    + "WHERE data.cusId = :cusId AND data.dateOfIssue "
    + "BETWEEN :fromDate AND :toDate";

如果设置参数,请确保设置正确的temeralType。

顺便说一句:请勿使用StringBuilder来连接字符串文字,请参阅 何时在Java中使用StringBuilder

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top