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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hql查询find(hql,values)使用占位符报错,字符串拼接无错
我在映射实体时写错,@Entity导包导错,应该导import javax.persistence.Entity;同时在@ManyToOne时应使用@JoinColumn。
hibernate hql语句in的使用和占位符
平时经常用Hibernate,由于习惯表间不建立关联,所以HQL查询时候经常要用in语句。     我最常用的情况有2种:    1、in后是个子查询,如 FROM A WHERE A.ID IN (SELECT B.AID FROM B WHERE ...),这样是没问题的,如果A.ID 和B.AID是相同的数据类型。    2、in的参数如果已知了,可以直接拼接在后面 如FR
hibernate的like用法(用占位符解决)
http://blog.sina.com.cn/s/blog_4baadb1f01009k5u.html
hibernate条件查询-----模糊查询==占位符查询
if(condition.get("vendorName")!=null && !condition.get("vendorName").equals("")) { where += " and v.NAME like :vendorName";} if(condition.get("vendorName")!=null&& !condition.get("vendorName
SQL和HQL占位符问题
hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 在hibernate中使用原生sql查询 例如: public void modifyUserById(User user) { Session session = HibernateSessionFacto
HQL-Query查询中的占位符处理到动态分页查询
//查询语句:采用别名(:ename)代替(?),set时不再使用位置参数下标,而是命名参数别名来赋值。 public void queryDept(){ session=HibernateUtil.getSession(); sql="from Dept where deptName=:deptname"; Query query=sessio
hibernate中query查询语句用占位符
问号占位 String hql = "from table where id = ?"; Query query = session.createQuery(hql); query.setString(0, 1L); list = query.list(); 自定义参数 String hql = "from table where id = :id"; Query query = session.c
Hql语句中占位符对应的传参的顺序,debug 浅析
代码写到一半突然想看看  HQL 是怎样 为这些占位符传参的,所以花了几分钟debug 看了一下 对于Hql 语句中占位符对应的参数的顺序是物理逻辑上的,还是逻辑顺序上的?   所谓的物理逻辑,也就是它们出现的顺序 ListproductIdList = findHql(             "SELECT idFROM ProductEntity WHERE
Hibernate占位符?和:及JPA
hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息: [main] WARN  [org.hibernate.hql.internal.ast.HqlSqlWalker] – [DEPRECATION] Encountered positional parameter near line 1, column 95.  Posi
Hibernate HQL 占位符
在HQL中有两种方法实现使用参数占用符 1、使用?    使用?设置参数占位符,之后通过setString()和setInteger()等方法为其赋值。如:    Query query = session.createQuery("from Guestbook where id    query.setInteger(0,12); 2、使用名称    使用名称作为