问题描述
- 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就可以了
时间: 2024-09-13 13:59:12