HQL中使用占位符查询mysql数据老是报错...

执行语句如下:
Session session = HibernateUtil.getSession();
String hql = "from Category where name=?";
Query query = session.createQuery(hql);
query.setString(0, "饮品");
错误:
ava.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V

1、检查是否有antlr包
2、看一下hql语句是否正确,Category 是否有对应的实体类,name是否有对应的属性

这些都是没问题的 我换成SQL就没有问题,用简单的hql也可以(
String hql = "from Category";
Query query = session.createQuery(hql);)
就是使用占位符就不行了 在执行这句就报错

如果antlr包、Category实体类、name属性都没有问题,那应该是HQL语句的问题。
你试把HQL语句写成“select c from Category c where name=?”试试。

是jar包的问题,我导入的是Struts2的antlr-2.7.2.jar,现在换成hibernate的antlr-2.7.7.jar就可以了