org.hibernate.hql.internal.ast.ErrorCounter报告错误

org.hibernate.hql.internal.ast.ErrorCounter报告错误,hibernate,Hibernate,tx=session.beginTransaction() Query q=session.createQuery(“将产品更新为p set p.quantity=:n,其中p.id=:i”) q、 设置参数(“n”,1000) q、 设置参数(“i”,11) 当我在hibernate中执行上述代码时,出现以下异常 2015年9月2日下午5:23:46 org.hibernate.hql.internal.ast.ErrorCounter报告错误 错误:行1:8:意外标记:在 2015年9月2日

tx=session.beginTransaction()
Query q=session.createQuery(“将产品更新为p set p.quantity=:n,其中p.id=:i”)
q、 设置参数(“n”,1000)
q、 设置参数(“i”,11)

当我在hibernate中执行上述代码时,出现以下异常

2015年9月2日下午5:23:46 org.hibernate.hql.internal.ast.ErrorCounter报告错误 错误:行1:8:意外标记:在 2015年9月2日下午5:23:46 org.hibernate.hql.internal.ast.ErrorCounter报告错误 错误:行1:8:意外标记:在 第1:8行:意外标记:在 位于org.hibernate.hql.internal.antlr.HqlBaseParser.updateStatement(HqlBaseParser.java:239) 位于org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:169) 位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:295) 位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:203) 位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) 位于org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:131) 在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:93) 位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167) 位于org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) 位于org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) 位于org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836) 位于in.edu.pondiuni.service.ProductIssuedService.deleteFromProduct(ProductIssuedService.java:41) 位于in.edu.pondiuni.controller.ProductIssuedServlet.processRequest(ProductIssuedServlet.java:78) 位于in.edu.pondiuni.controller.ProductIssuedServlet.doGet(ProductIssuedServlet.java:90) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
在java.lang.Thread.run(Thread.java:744)

这是一个开放的bug,如果实体位于以“in”或“by”开头的包中,HQL查询将失败。供你参考

您可以通过在hbm.xml中添加entity name属性来解决此问题,如下所示

<class name="in.package.Entity" entity-name="Entity" table="MY_TABLE">


这是一个奇怪的错误,上面写着“意外令牌:in at”,但您的查询没有任何令牌“in”,您有某个“in”令牌,但您不能将其用作关键字。还要检查您的令牌是否键入正确,比如如果“i”是长的,您必须按照q.setParameter(“i”,(long)11)这样做;Anudeep先生,我尝试了q.setParameter(“I”,(长)11);但它不工作太..我没有得到任何问题,在插入和选择,但得到的问题,在更新。。。你知道这个异常意味着什么吗…是的,它找不到令牌:这很奇怪,可能是你有不同的hibernate版本..在没有别名“update Product set quantity=:ProdQuantity where id=:productId”的情况下尝试,正确设置参数类型..如果productId映射为long,则设置参数(“productId”,(long)11)..如果仍然不起作用,请尝试使用“更新产品集数量=?其中id=?”和setParameter(0,1000)等位置绑定参数;设置参数(1,(长)11);
<class name="in.package.Entity" entity-name="Entity" table="MY_TABLE">