【问题标题】:WHERE b.maxOrdini > maxordine throws "The identification variable 'maxordine' is not defined in the FROM clause"WHERE b.maxOrdini > maxordine 抛出“FROM 子句中未定义标识变量‘maxordine’”
【发布时间】:2015-09-24 21:11:52
【问题描述】:

我尝试在我的 Java EE 应用程序中编写此查询:

public List<Fornitore> findByMaxOrdine(int maxordine) 
{
    Query query;
    query = em.createQuery("SELECT b FROM Fornitore b WHERE b.maxOrdini > maxordine");
    query.setParameter("maxordine", maxordine);
    return query.getResultList();
}

当我尝试运行它时,结果如下:

Exception Description: Problem compiling [SELECT b FROM Fornitore b WHERE b.maxOrdini > maxordine][46, 55] The identification variable 'maxordine' cannot be used in conjunction with the > operator.[46, 55] The identification variable 'maxordine' is not defined in the FROM clause.

我不明白为什么它不起作用。 感谢您的帮助。

【问题讨论】:

  • 你试过SELECT b FROM Fornitore b WHERE b.maxOrdini &gt; :maxordine吗?

标签: jpa jpql


【解决方案1】:

由于maxordine 是一个命名参数,那么您的查询应该是:

"SELECT b FROM Fornitore b WHERE b.maxOrdini > :maxordine"

如果您愿意,您还可以使用位置参数,而不是命名参数。然后,(重构的)方法看起来像:

public List<Fornitore> findByMaxOrdine(int maxordine) {
    return em.createQuery("SELECT b FROM Fornitore b WHERE b.maxOrdini > ?1")
           .setParameter(1, maxordine);
           .getResultList();
}

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多