java.lang.IllegalArgumentException: No positional parameters in query: select count(*)

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:51:52
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: No positional parameters in query: select count(*) from GameInfo
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

root cause

非法参数异常。

你查询语句里是不是参数缺少,或者类型不对。

比如,应该是日期的参数,你却用的String。

用HQL或者本地SQL写的时候,有3个参数,而你set的时候是按位置,少了,或错放了参数。(从“0”计数)
应该是:
q.setParameter(0, val1);
q.setParameter(1, val2);
q.setParameter(2, val3);

最好不要用这样的方法,用
q.setParameter("name1", val1);
q.setParameter("name2", val2);
q.setParameter("name3", val3);

这个错误有点简单,但我看不到你的代码,首先想到的是这个。

你所查询的数据库表中有非法字符,可能是直接从数据库输入的,或者在页面输入时没有正确的验证措施

楼主显然是想获得表中的记录条数。
不要用HQL作了,如果要用Hibernate,可以 使用DAO获取到所有对象的List,然后察看List的大小。由于Hibernate是Lazy Loading的,应该开销不大。
或者直接用JDBC吧。

count()中没有参数!!

看看你数据库查询和参数设置部分,方便的话贴来看看

com.dl.dao.manager.GameDAO.findGameByPage(GameDAO.java:49)
com.dl.action.manager.GameAction.gameManage(GameAction.java:54)
com.dl.action.BaseAction.execute(BaseAction.java:40)
看看这3句有没有问题。