在哪里b.maxOrdini> maxordine throws“在FROM子句中未定义标识变量'maxordine'”

时间:2015-07-07 11:41:26

标签: jpa jpql

我尝试在我的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.

我无法理解为什么它不起作用。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

由于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();
}