【问题标题】:java.sql.SQLSyntaxErrorException: Syntax error: >Encountered "FROM"java.sql.SQLSyntaxErrorException:语法错误:>遇到“FROM”
【发布时间】:2016-12-03 20:32:08
【问题描述】:

我正在使用 JavaEE 构建货币转换器应用程序。基于 Web 的客户端输入金额和货币(例如“美元”和“欧元”)。

我不是 SQL 专家,当我运行和测试网页时,我收到以下错误:

java.sql.SQLSyntaxErrorException:语法错误:>在第 1 行第 12 列遇到“FROM”。错误代码:30000 调用:SELECT >ID、FROM、RATE、TO、VALUE FROM RATE WHERE ((FROM = ?) AND (TO = ?)) bind >=> [2 个参数绑定] 查询: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();
}

我正在尝试更改查询,但它也不起作用。有什么建议吗?

【问题讨论】:

    标签: sql jpa javadb


    【解决方案1】:

    转义 from 列,因为它是关键字或重命名它。

    尝试双引号“from”或[from]

    【讨论】:

    • 是的,这是关键字,谢谢@Peter_Saly。现在的问题是 query.getSingleResult(); 在我的数据库中找不到与 from 和 to 货币匹配的行。它给了我一个例外:“getSingleResult() 没有检索到任何实体。”我的表有 4 列:id、fromcurrency、tocurrency、rate。我现在将尝试查看此问题。 :(
    • 我建议使用汇率来参考货币。参考货币可以是欧元。使用参考货币,您不需要维护所有组合。加载所有费率。计算将是欧元,然后是目的地货币。没有精度损失。
    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 2018-03-26
    • 1970-01-01
    • 2020-03-10
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多