【问题标题】:Hibernate Cannot locate named parameter exceptionHibernate 找不到命名参数异常
【发布时间】: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


【解决方案1】:

参数占位符':searchKey' 不需要加上单引号'。删除引号可能会解决您的问题。

所以查询将是:

select * from client c join clientcategory cc on c.id=cc.client_id where match(cc.clientkeyword) against(:searchKey in boolean mode)

你可以使用重载的setParameter()指定参数的Datatype,它接受3个参数

  1. 参数名称
  2. 参数值
  3. 休眠类型

有关方法的更多信息请参考Hibernate doc

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 2015-09-13
    • 2017-12-30
    • 2015-07-25
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2015-03-29
    相关资源
    最近更新 更多