2 wyang55 wyang55 于 2016.03.18 14:49 提问

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

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.03.18 15:13

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

wyang55
wyang55   2016.03.18 17:49

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

qq_29829081
qq_29829081   2016.03.21 10:53

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

wyang55
wyang55   2016.03.22 10:47

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!