2016-12-03 8 views
0

Ich erstelle eine Währungsumrechneranwendung mit JavaEE. Der webbasierte Client gibt einen Betrag und die Währungen ein (z. B. "USD" und "EUR").java.sql.SQLSyntaxErrorException: Syntaxfehler:> "FROM" gefunden

Ich bin kein Experte in SQL, wenn ich ausführen und testen Sie die Webseite ich die folgende Fehlermeldung:

java.sql.SQLSyntaxErrorException: Syntax error: >Encountered "FROM" at line 1, column 12. Error Code: 30000 Call: SELECT >ID, FROM, RATE, TO, VALUE FROM RATE WHERE ((FROM = ?) AND (TO = ?)) bind >=> [2 parameters bound] Query: ReadAllQuery(referenceClass=Rate >sql="SELECT ID, FROM, RATE, TO, VALUE FROM RATE WHERE ((FROM = ?) AND (TO >= ?))")

I EntityManager Methode createQuery verwendet, die diese Werte erhält und versuchen, die Währungen zu finden Conversion-Rate:

public double convertTo(double value, String from, String to) { 
    TypedQuery<Rate> query = em.createQuery("" 
      + "SELECT c FROM Rate c WHERE c.from = :from AND c.to = :to", Rate.class); 

    query.setParameter("to", to); 
    query.setParameter("from", from); 

    Rate result = query.getSingleResult(); 

    if (result == null) { 
     throw new EntityNotFoundException("Can't find rate"); 
    } 

    return value * result.getValue(); 
} 

Ich versuche, die Abfrage zu ändern, aber es funktioniert auch nicht. Irgendwelche Vorschläge?

Antwort

0

escape from Spalte, weil es ein Schlüsselwort ist oder es umbenennen.

versuchen doppelte Anführungszeichen "von" oder [aus]

+0

Ja, es war das Schlüsselwort, dank @Peter_Saly. Das Problem ist jetzt, dass 'query.getSingleResult();' nicht die Zeile in meiner Datenbank findet, die mit der von und zu den Währungen übereinstimmt. Es gibt mir die Ausnahme: "getSingleResult() hat keine Entitäten abgerufen." Meine Tabelle hat 4 Spalten: ID, von Währung, Währung, Rate. Ich werde versuchen, dieses Problem jetzt zu sehen. :( – teowey

+0

Ich empfehle, Preise zu Referenzwährung zu verwenden. Referenzwährung könnte Euro sein. Mit Referenzwährung müssen Sie nicht alle Kombinationen verwalten. Alle Preise laden. Berechnung wird zu Euro dann zu Zielwährung. Kein Präzisionsverlust. –

Verwandte Themen