我正在使用JavaEE構建貨幣轉換器應用程序。基於網絡的客戶輸入金額和貨幣(例如「美元」和「歐元」)。java.sql.SQLSyntaxErrorException:語法錯誤:>遇到「FROM」
我不是SQL專家,當我運行和測試我收到以下錯誤的網頁:
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 >= ?))")
我用實體管理方法createQuery
是獲取這些價值,並試圖找到貨幣轉換率:
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();
}
我試圖改變查詢,但它也不工作。有什麼建議麼?
是的,這是關鍵字,謝謝@Peter_Saly。現在的問題是'query.getSingleResult();'在我的數據庫中找不到與from和currency匹配的行。它給了我例外:「getSingleResult()沒有檢索任何實體。」我的表有4個col:id,fromcurrency,tocurrency,rate。我現在會試着看到這個問題。 :( – teowey
我建議使用匯率來參考貨幣,參考貨幣可能是歐元,使用參考貨幣您不需要維護所有組合,加載所有匯率,計算將以歐元兌換到目標貨幣,沒有精確損失。 –