【发布时间】:2015-04-23 08:22:06
【问题描述】:
我的异常信息是:
org.hibernate.QueryParameterException: could not locate named parameter [searchKey] at
org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterDescriptor(ParameterMetadata.java:148) at
org.hibernate.engine.query.spi.ParameterMetadata.getNamedParameterExpectedType(ParameterMetadata.java:165) at
org.hibernate.internal.AbstractQueryImpl.determineType(AbstractQueryImpl.java:523) at
org.hibernate.internal.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:493) at
com.si.bse.dao.impl.SearchDaoImpl.getClientList(SearchDaoImpl.java:99) at
com.si.bse.services.impl.SearchServicesImpl.getClientList(SearchServicesImpl.java:32)
抛出它的代码是:
@SuppressWarnings("unchecked")
@Transactional
@Override
public List<Client> getClientList(String searchWord) {
String sql = "select * from client c join clientcategory cc on c.id=cc.client_id where match(cc.clientkeyword) against(':searchKey' in boolean mode)";
SQLQuery query = (SQLQuery) getCurrentSession().createSQLQuery(sql).addEntity(Client.class).setParameter("searchKey", searchWord);
List result = query.list();
return result;
}
为什么 Hibernate 找不到我的命名参数?
【问题讨论】:
-
尝试使用
select * from client c join clientcategory cc on c.id=cc.client_id where match(cc.clientkeyword) against(:searchKey in boolean mode)查询 -
可以在
setParameter中指定参数类型。看看docs.jboss.org/hibernate/core/3.2/api/org/hibernate/… -
我已经整理了你的代码和异常块。确保您已彻底研究过此异常。这应该是一个相当容易解决的问题。
-
非常感谢@Amogh 它的工作原理..:)
标签: hibernate spring-mvc