String one ="select c.name,c.sex,c.company ,c.officeAddress,c.officePhone from CardType t ,Contact c where t.uid=? ";
if(s!=null){
one+="and c.name=?and t.oid=c.typeid ";
}else{
one+="and t.oid=c.typeid ";
} query = getSession().createSQLQuery(one);
query.setInteger(0,account.getUid().intValue());
if(s!=null){
query.setString(1,s);
System.out.println("执行了吗???????????????????????????????");
}
List list = query.list();
request.setAttribute("cont",list);
第一次进入else没有错,当输入了条件在点查找 就出错了 非要说query.setString(1,s); 这个有问题 就是2个条件的查询 第一次显示全部第二次根据条件来 异常信息是:java.lang.IllegalArgumentException: Positional parameter does not exist: 1 in query: select c.name,c.sex,c.company ,c.officeAddress,c.officePhone from CardType t ,Contact c where t.uid=? and c.name=?and t.oid=c.typeid
org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:328)
org.hibernate.impl.AbstractQueryImpl.setString(AbstractQueryImpl.java:434)
Actions.CardActions.allcn(CardActions.java:252)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
base.EncodingFilter.doFilter(EncodingFilter.java:33)
if(s!=null){
one+="and c.name=?and t.oid=c.typeid ";
}else{
one+="and t.oid=c.typeid ";
} query = getSession().createSQLQuery(one);
query.setInteger(0,account.getUid().intValue());
if(s!=null){
query.setString(1,s);
System.out.println("执行了吗???????????????????????????????");
}
List list = query.list();
request.setAttribute("cont",list);
第一次进入else没有错,当输入了条件在点查找 就出错了 非要说query.setString(1,s); 这个有问题 就是2个条件的查询 第一次显示全部第二次根据条件来 异常信息是:java.lang.IllegalArgumentException: Positional parameter does not exist: 1 in query: select c.name,c.sex,c.company ,c.officeAddress,c.officePhone from CardType t ,Contact c where t.uid=? and c.name=?and t.oid=c.typeid
org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:328)
org.hibernate.impl.AbstractQueryImpl.setString(AbstractQueryImpl.java:434)
Actions.CardActions.allcn(CardActions.java:252)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
base.EncodingFilter.doFilter(EncodingFilter.java:33)
解决方案 »
- 想学工作流,不知道学什么好,网上的也没什么资料
- ssh2整合后调用CRUD方法,findByUserid没问题,可findByUsername报错,没找出原因,希望能得到解答。
- java 心跳包 实现长连接
- WebService的问题,
- JavaEE实践-天际网开发团队与你分享web2.0/SNS网站开发经验
- 求用java来生成xml文件的方法?
- unix 上用jsp 开发视频聊天.
- WEBLOGIC问题
- 我的oracle AS不支持hibernate 3??
- JSP连接SQL Server 2000系统配置问题!
- 关于hibernate和dozer的无法拷贝对像问题
- 搞了两天了,还是没有解决,webwork2.1.7到2.2.2!!!!
而你好像只是传递了一个参数
one+="and c.name=?and t.oid=c.typeid ";
}这句的话 就是有两个问号 你好像只给其中一个问号给了值吧?
if(s!=null){
query.setString(1,s);