List<Userservices> list=new ArrayList<Userservices>();
Object[] object=new Object[5];
int i=0;
String hql="from Userservices u where 1=1";
if (name.trim().length()!=0) {
hql+=" and u.users.name=?";
object[i++]=name;
}
if (loginname.trim().length()!=0) {
hql+=" and u.loginname=?";
object[i++]=loginname;
}
if (labip.trim().length()!=0) {
hql+=" and u.labip=?";
object[i++]=labip;
}
if (status==-1) {
hql+=" and u.status in (?,?)";
object[i++]=0;
object[i++]=1;
}else {
hql+=" and u.status=?";
object[i++]=status;
}
list=this.getHibernateTemplate().find(hql, object);
System.out.println("==========================findByCond===============222=======count =====resultNum====");
return list;
出现下面的财务 我输入的是 name=lala ,status=-1
 Positional parameter does not exist: 3 in query: from Userservices u where 1=1 and u.users.name=? and u.status in (?,?)
这是为什么?拼hql语句错了吗?

解决方案 »

  1.   

    u.users.name=? 
    估计是这个问题了,可以嵌套对象的吗?
    我还没试过~~
      

  2.   

    parameter does not exist
    参数不对!
      

  3.   

    hql拼写是没有错误的,u.users.name这么写也是正确的,你可以将参数全部拼到hql语句中去应该没有问题的
      

  4.   

    找不到参数,u.users.name仔细检查下,是pojo中的参数