具有该名称[userName]的参数不存在

时间:2016-04-22 05:17:00

标签: hibernate jpa

我有这个Hibernate / JPA代码:

List<User> users = getEntityManager().createQuery("from com.xxx.xxx.persistence.model.User where name    = :userName")
    .setParameter("userName", name.toLowerCase())
    .getResultList();

但我得到了这个例外:

 java.lang.IllegalArgumentException: Parameter with that name [userName] did not exist
    at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:487)
    at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:638)
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:163)
    at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32)

如果我在SQL中硬编码userName,删除setParamter,它可以工作。发生了什么事?

1 个答案:

答案 0 :(得分:1)

对于正在寻找其他解决方案的人员,请检查您是否没有在参数后紧跟分号(例如,如果您复制本地查询)。

示例:

var key = 'parent';
console.log((key=='parent' && Boolean(null)))
console.log((key=='parent' && Boolean('')))

这将不起作用,因为它将查找参数“ id”,但您的实际参数名称是“ id;”。