public T getByHql(String hql, Map<String, Object> params) {
Query q = getCurrentSession().createQuery(hql);
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
q.setParameter(key, params.get(key));
}
}
List<T> l = q.list();
if (l != null && l.size() > 0) {
return l.get(0);
}
return null;
}
在运行时Struts报错
Struts Problem Report
Struts has detected an unhandled exception:
Messages:
could not locate named parameter [param71]
File: org/hibernate/engine/query/spi/ParameterMetadata.java
Line number: 100
————————————————————————————————————————————————————————————————
Stacktraces
org.hibernate.QueryParameterException: could not locate named parameter [param71]
org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:100)
org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:106)
org.hibernate.internal.AbstractQueryImpl.determineType(AbstractQueryImpl.java:466)
org.hibernate.internal.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:436)
teamFive.dao.impl.BaseDAOImpl.getByHql(BaseDAOImpl.java:61)
以下省略……
调试时截图如下
查询语句和传入参数没有发现什么不对的地方,整了半天头不知道为什么
因为是第一次整合SSH,所以很多地方都没经验,还请高人解答……
------解决方案--------------------
params里面没有param71?
------解决方案--------------------
应该是key值传错了,在hql中前一个参数应该传的是实体类的属性名称或者顺序,param71应该没有这个属性名的把
------解决方案--------------------
应该是有空格或者别的什么东西,看看你的params是什么东西。
应该trim()下
------解决方案--------------------
参数找不到了。
------解决方案--------------------
是不是参数类型不对了。。