我有这个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,它可以工作。发生了什么事?
答案 0 :(得分:1)
对于正在寻找其他解决方案的人员,请检查您是否没有在参数后紧跟分号(例如,如果您复制本地查询)。
示例:
var key = 'parent';
console.log((key=='parent' && Boolean(null)))
console.log((key=='parent' && Boolean('')))
这将不起作用,因为它将查找参数“ id”,但您的实际参数名称是“ id;”。