java - 嵌套异常是 org.hibernate.QueryParameterException:找不到命名参数 [限制]
问题描述
public java.util.Collection findEstablishmentProfessionalsByUsernameEstId(
java.lang.String espUseUsername, java.lang.Integer espEstId, Integer limit) throws GenericBusinessException {
try {
ArrayList paramList = new ArrayList();
List valueList = new ArrayList();
paramList.add(new String("espEstId"));
valueList.add(espEstId);
paramList.add(new String("espUseUsername"));
valueList.add(espUseUsername);
String queryString = "from "
+ EstablishmentProfessionalsBean.class.getName()
+ " e where e.espEstId = :espEstId and e.espRecordStatus='approved' and e.espUseUsername=:espUseUsername and e.espShow=1";
// Add a an order by on all primary keys to assure reproducable
// results.
queryString += " order by e.espSurname ASC,e.espInitials ASC,e.espExtClinicName ASC";
if(limit != null && limit.intValue() > 0){
paramList.add(new String("limit"));
valueList.add(limit);
}
String params [] = (String []) paramList.toArray (new String [paramList.size ()]);
List list = hibernateTemplate.findByNamedParam(queryString,params, valueList.toArray());
return list;
} catch (DataAccessException e) {
log.error("DataAccessException", e);
throw new GenericBusinessException(e);
} finally {
log.debug("finished findEstablishmentProfessionalsByUsernameEstId((java.lang.String espUseUsername, java.lang.Integer espEstId, Integer limit)");
}
}
following are the stack trace
堆栈跟踪
com.riomed.cellma.exception.GenericBusinessException:org.springframework.orm.hibernate3.HibernateQueryException:找不到命名参数[限制];嵌套异常是 org.hibernate.QueryParameterException: could not locate named parameter [limit] at com.riomed.cellma.session.CellmaFacade.findEstablishmentProfessionalsByUsernameEstId(CellmaFacade.java:30866) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base /java.lang.reflect.Method.invoke(Method.java:566) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) 在 org.springframework.aop.framework。runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread. java:61) at java.base/java.lang.Thread.run(Thread.java:834) 引起:org.springframework.orm.hibernate3.HibernateQueryException:找不到命名参数[限制];嵌套异常是 org.hibernate.QueryParameterException: could not locate named parameter [limit] at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:642) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor .java:412) 在 org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424) 在 org.springframework.orm.hibernate3。
解决方案
在您的查询中:
e where e.espEstId = :espEstId and e.espRecordStatus='approved'
and e.espUseUsername=:espUseUsername and e.espShow=1
你有这些命名参数:
- :espEstId
- :espUseUsername
你想替换一个命名参数limit
因为在您的代码中,您这样编写:
paramList.add(new String("limit"));
valueList.add(limit);
但是你的查询中没有 :limit ,所以你有这个错误。
推荐阅读
- julia - 如何在 Julia 的牛虻中按升序或降序对条形图进行排序?(有谁知道一种不那么老套的方法吗?)
- python - 使用 pandas append 函数后,行值变成 NaN
- outlook - 即使是基本的 microsoft graph 权限也需要管理员批准
- python - 烧瓶 request.form.to_dict()
- mysql - 在 React 和 Node 中,如何让 Formik 用我的 mySQL 表用户的数据填充字段?
- c++ - 在 C++ 中处理时,char 数据类型输入被转换为不同的东西
- laravel - 难以将数据从控制器传递到路由
- sql - SQL Server 组按最大日期
- html - 显示在 div 外的文本
- python - “ValueError:所有输入数组必须具有相同的形状”当 one-hot 编码 DNA 序列时