语句:
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)
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)
然后在 query.setString(1, "%"+a+"%");
这样子就可以了.
queryForPage方法本身就会把a里面的参数应用到hql语句中。这是一个封装的方法;
queryForPage方法本身就会把a里面的参数应用到hql语句中。这是一个封装的方法;
query.setString(1, "%"+a+"%");
尝试一下