为什么此 JPQL 在消息"You have attempted to set a parameter at position x which does not exist in this query



我有以下命名查询:

@NamedQueries({
@NamedQuery(name ="Movies.findByTitle", query = "SELECT m FROM Movies m WHERE m.title = :title")
})  

当我尝试像下面这样执行它时:

public List<T> findByTitle(String title) {
return getEntityManager().
createNamedQuery("Movies.findByTitle").
setParameter("findByTitle", title).
getResultList();
}

然后我得到以下异常:

您尝试使用查询字符串SELECT m FROM Movies m WHERE m.s title =:title.

中不存在的findByTitle名称设置参数值。这是如何引起的,我该如何解决?

需要设置正确的参数名称。您可以在查询中看到参数名为"title"不是"findByTitle".

setParameter("findByTitle", title)改为setParameter("title", title)

相关内容