JPA数据查询:子表达式中缺少右括号

时间:2013-12-03 14:03:13

标签: java-ee jpa

我对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中查询有效。

1 个答案:

答案 0 :(得分:1)

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

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

如果设置参数,请务必设置正确的TemporalType。

BTW:不要使用StringBuilder来连接字符串文字,请参阅when to use StringBuilder in java