http://opensource.atlassian.com/projects/hibernate/browse/HHH-1423严重: Servlet.service() for servlet default threw exception
org.hibernate.HibernateException: ordinal parameter mismatch
at org.hibernate.engine.query.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.java:225)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:95)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1202)
at $Proxy9.createQuery(Unknown Source)
at com.seg.oss.core.dao.impl.SpringDaoSupport$4.doInHibernate(SpringDaoSupport.java:177)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:342)
at com.seg.oss.core.dao.impl.SpringDaoSupport.findByQueryParam(SpringDaoSupport.java:174)
at com.seg.oss.core.dao.impl.SpringDaoSupport$3.doInHibernate(SpringDaoSupport.java:142)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:342)
at com.seg.oss.core.dao.impl.SpringDaoSupport.pageQuery(SpringDaoSupport.java:136)
at com.seg.oss.core.dao.impl.SpringDaoSupport.pageQuery(SpringDaoSupport.java:218)
at com.seg.oss.crms.service.impl.SimcardManagerServiceImpl.pageQuery(SimcardManagerServiceImpl.java:110)
at com.seg.oss.crms.web.action.SimcardManagerAction.pageQuery(SimcardManagerAction.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.seg.oss.core.web.struts2.CapabilityWatchInterceptor.intercept(CapabilityWatchInterceptor.java:30)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.seg.oss.sys.web.interceptor.CheckLoginInterceptor.intercept(CheckLoginInterceptor.java:51)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling........我用的Hibernate 3.2。应该不是我设置参数问题。我手上做的这个项目只要根据车载号码这个字段联合其他字段查询就报这个错误。我hibernate映射类型是:java.lang.String 数据库类型:varchar2(20) 
基本写法如下:
hql="from SimCard where 1=1  departid=? and calletter like ? order by id desc";
list param = new ArrayList();
param.add(new Long(1));
param.add(new Long(361));
param.add(new String("%13510998774%"));
就是我调用session.createQuery(hql)时;参数还没设置。就报错了。我在官方网站上找到了http://opensource.atlassian.com/projects/hibernate/browse/HHH-1423
第一次发帖。 没有多少分给大家。给完了。。不好意思。。

解决方案 »

  1.   

    补充点。 怎样解决这个问题。 项目中所有人都是出现同样的问题。我用的是struts2.0+spring3.0+hibenate3.2的版本
    DAO层继承自org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    public List findByQueryParam(final String hql,final List value) {
    return (List)this.getHibernateTemplate().executeFind(new HibernateCallback(){
    public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    Query query = session.createQuery(hql);
    int i = 0;
    for(Object val : value){
    query.setParameter(i, val);
    i++;
    }
    List lis =  query.list();
    return lis;
    }
    });
    }
    进这个方法后红色地方就表错了
      

  2.   

    老兄:hql="from SimCard where 1=1  departid=? and calletter like ? order by id desc"; 
    list param = new ArrayList(); 
    param.add(new Long(1)); 
    param.add(new Long(361)); 
    param.add(new String("%13510998774%")); 两个 ? ? 占位符,你传三个参数? 写错了吧.
      

  3.   

    对不起写错了
    hql="from SimCard where 1=1  departid=? and calletter like ? order by id desc";  
    list param = new ArrayList(); 
    param.add(new Long(361));  
    param.add(new String("%13510998774%")); 
      

  4.   

    恩 这个应该是Hibernate的BUG原因可能是你的HQL语句中有关键字call
    把关键字换了试试  我的也报了这样的错 不过我的好像是因为有关键字 revert 
      无奈中
      

  5.   

    恩 这个应该是Hibernate的BUG原因可能是你的HQL语句中有关键字call
    把关键字换了试试  我的也报了这样的错 不过我的好像是因为有关键字 revert 
      无奈中
      

  6.   

    hql="from SimCard where 1=1  departid=? and calletter like ? order by id desc"; 
    Query q= session.createQuery(hql);
    q.setLong(361);
    q.setString("%13510998774%");