Question

I've got a question about a JPA query.

I'm getting

The right parenthesis is missing from the sub-expression.
The query contains a malformed ending.

My query looks like this:

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();

I was trying with:

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();

In db that query works.

Was it helpful?

Solution

TO_DATE is not a JPQL function, try it with parameters

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

If you set the parameters, be sure to set the right TemporalType.

BTW: Do not use StringBuilder to concatenate String literals, see when to use StringBuilder in java

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top