我尝试在我的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.
我无法理解为什么它不起作用。 谢谢你的帮助。
答案 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();
}