Frage

Ich habe eine Frage zu einer JPA -Abfrage.

Ich erhalte

In der Unterexpression fehlt die richtige Klammung.
Die Abfrage enthält ein fehlerhaftes Ende.

Meine Abfrage sieht so aus:

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

Ich habe versucht mit:

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 funktioniert diese Abfrage.

War es hilfreich?

Lösung

TO_DATE ist keine JPQL -Funktion, versuchen Sie es mit Parametern

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

Wenn Sie die Parameter festlegen, stellen Sie sicher, dass Sie den richtigen Temporaltype festlegen.

Übrigens: Verwenden Sie StringBuilder nicht, um String -Literale zu verkettet, siehe Wann ist StringBuilder in Java zu verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top