2016-12-03 62 views
0

我正在使用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(); 
} 

我試圖改變查詢,但它也不工作。有什麼建議麼?

回答

0

轉義from列,因爲它是關鍵字或重命名它。

嘗試雙引號「from」或[from]

+0

是的,這是關鍵字,謝謝@Peter_Saly。現在的問題是'query.getSingleResult();'在我的數據庫中找不到與from和currency匹配的行。它給了我例外:「getSingleResult()沒有檢索任何實體。」我的表有4個col:id,fromcurrency,tocurrency,rate。我現在會試着看到這個問題。 :( – teowey

+0

我建議使用匯率來參考貨幣,參考貨幣可能是歐元,使用參考貨幣您不需要維護所有組合,加載所有匯率,計算將以歐元兌換到目標貨幣,沒有精確損失。 –

相關問題