语句:
    this.queryForPage("from Goods a where a.name like '%?%' order by a.name",a);
   里面的?是要用后面的a填充;这样写不行
异常信息:
     严重: Servlet.service() for servlet default threw exception
java.lang.IllegalArgumentException: No positional parameters in query: select count(a.id) from Goods a where a.name like '%?%'
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:332)
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:366)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:846)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
at sky.drp.srv.SrvBase$1.doInHibernate(SrvBase.java:70)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
at sky.drp.srv.SrvBase.queryForPage(SrvBase.java:59)
at sky.drp.goods.GoodServices.find(GoodServices.java:20)
at sky.drp.goods.GoodsAction.find(GoodsAction.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)

解决方案 »

  1.   

    hql中 单引号 内的东西会 被当做字符串处理. 所以你的 ? 还是被当做?处理了 并没有作为占位符.你直接 this.queryForPage("from Goods a where a.name like ? order by a.name",a); 
    然后在 query.setString(1, "%"+a+"%");
    这样子就可以了.
      

  2.   

    这样还是不行, 
    queryForPage方法本身就会把a里面的参数应用到hql语句中。这是一个封装的方法;
      

  3.   

    这样还是不行,  
    queryForPage方法本身就会把a里面的参数应用到hql语句中。这是一个封装的方法;
      

  4.   

    你这样写得不够全面。你那个封装方法写得有问题。你那个方法估计是为了实现分页的。那个select count(a.*) from 那个语句的a参数你没设置所以它出错
      

  5.   

    this.queryForPage("from Goods a where a.name like ? order by a.name",a);  
    query.setString(1, "%"+a+"%"); 
    尝试一下
      

  6.   

    "from Goods a where a.name like '%" + ? + "%' order by a.name",a