org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?] 

解决方案 »

  1.   

    错误全文:在做多条件查询时,访问时出错Struts Problem Report
    Struts has detected an unhandled exception: Messages: unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?] 
    unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?] 
     
    File: org/hibernate/hql/ast/QuerySyntaxException.java 
    Line number: 31 
    --------------------------------------------------------------------------------Stacktraces
    org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 8 near line 1, column 69 [from cn.uoleem.model.MemberInfo as m where mid(cardmember2,11,2) = 08 and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)?] 
        org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:657)
        You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:   struts.devMode=falsein your WEB-INF/classes/struts.properties file. 
      

  2.   

    MemberInfo 必须是表对应的类名,而不是表名! 
    吧完整代码贴出来看下
      

  3.   

    这是DAO的实现类
    public List<MemberInfo> query(String membername,String telephone,String endtelphone,String likeTaste,String address,String month,int xb,int 1,int 2,String memberids,int userId)
    {
    Object[] params;
    membername=membername.replaceAll("'","");
    List<MemberInfo> memberInfoList = null;
    String strmonth="";
    if("".equals(month)||month==null)
    {
    strmonth="like '%'";
    }else 
    {
    strmonth="= "+month;
    }
    if(xb==0)
    {
    if(1==0)
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.userId=?  and mid(cardmember2,7,4)<?",params);

    }
    else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.userId=?  and mid(cardmember2,7,4)<?",params);

    }

    }
    else if(1==-1)
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.userId=?",params);

    }
    else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.userId=?",params);

    }

    }
    else
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId,1,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.userId=?  and mid(cardmember2,7,4)<? and mid(cardmember2,7,4)>?",params);

    }
    else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",userId,1,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.userId=?  and mid(cardmember2,7,4)<? and mid(cardmember2,7,4)>?",params);

    }
    }

    }else
    {
    if(1==0)
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.sex=? and m.userId=? and mid(cardmember2,7,4)<?",params); }
    else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)<?",params); }

    }
    else if(1==-1)
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.sex=? and m.userId=?",params); }
    else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=?",params); }

    }
    else
    {
    if(!"".equals(memberids))
    {
    if("".equals(memberids))memberids="0";
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId,1,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.id in ("+memberids+") and m.sex=? and m.userId=? and mid(cardmember2,7,4)<? and mid(cardmember2,7,4)>?",params); }else
    {
    params=new Object[]{"%"+membername+"%","%"+telephone+"%","%"+endtelphone+"%","%"+likeTaste+"%","%"+address+"%",xb,userId,1,2};
    memberInfoList=find("from MemberInfo as m where mid(cardmember2,11,2) "+strmonth+" and m.membername like ? and m.telephone like ? and mid(m.telephone,11,1) like ? and m.likeTaste like ? and m.address like ? and m.sex=? and m.userId=? and mid(cardmember2,7,4)<? and mid(cardmember2,7,4)>?",params); }

    }

    }

    if(memberInfoList!=null&&memberInfoList.size()>=1){
    return memberInfoList;
    }
    return null;
    }
      

  4.   

    我怀疑是hql拼接出错了,少个还是多个什么东西??
      

  5.   

    mid(cardmember2,11,2) ?
    这个函数怎么回事?
      

  6.   

    如果你是想取中间那部分字符的话,换substring试试
      

  7.   

    substring(field1, 5, 3) = 'abc'将mid改成
    substring
      

  8.   

    我也是看人家的代码,mid什么意思??
      

  9.   

    mid(cardmember2,7,4)?错了吧,应该少了=号或者like
    建议你将那些拼出来的hql语句打印到控制台看一下,这样比较容易发现哪里拼错了。
      

  10.   

    查了一下mid是mysql的一个函数也就是取字符串的跟substring差不多,为什么我mid(cardmember2,11,2) = 9的时候老是出错,其他的没问题。