我有这个 Hibernate/JPA 代码:
List<User> users = getEntityManager().createQuery("from com.xxx.xxx.persistence.model.User where name = :userName")
.setParameter("userName", name.toLowerCase())
.getResultList();
Run Code Online (Sandbox Code Playgroud)
但我收到此异常:
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)
Run Code Online (Sandbox Code Playgroud)
如果我在 SQL 中对 userName 进行硬编码,删除 setParamter,它就可以工作。怎么了?
小智 8
对于寻找其他解决方案的人,请检查您是否没有在参数后放置分号(例如,如果您复制本机查询)。
例子:
Query query = getEm().createNativeQuery("Select * from a where a.id = :id;");
query.setParameter("id", 1);
Run Code Online (Sandbox Code Playgroud)
这行不通,因为它会查找参数“id”,但您的实际参数名称是“id;”。
| 归档时间: |
|
| 查看次数: |
6807 次 |
| 最近记录: |