hql

public List<SalChance> searchChance(String customerName) {
Session  session = super.getSession();
String hql = "select s from SalChance s where s.chcCustName like '%+customerName+%'";
Query query = session.createQuery(hql);
List<SalChance> salchances = query.list();
return salchances;
}
那条hql语句我写错了,我的意思是想模糊查询的,请高手指点

解决方案 »

  1.   

    String hql="from SalChance chcCustName like ?";
    Query query=session.createQuery(hql);
    query.setString(0,customerName);
    List<SalChance> salchances = query.list();
    return salchances;
      

  2.   

    少了两引号
    String hql = "select s from SalChance s where s.chcCustName like '%" + customerName + "%'";
      

  3.   


    应该为
    hql = "from SalChance s where 1=1;
    if(customerName != null){
      hql += "and s.chcCustName like '%" + customerName + "%'"
    }
      

  4.   

    String hql ="select s from SalChance s where s.chcCustName like:customerName";   
    Query query = session.createQuery(hql);
    query.setString("customerName", "%"+customerName+"%");   
      

  5.   

    少了对引号这样也可以
    String hql = "from SalChance s where s.chcCustName like '%" + customerName + "%'";
      

  6.   

    嘿嘿用Criteria把模糊查询把
    public List searchSucc(String userPid, int tradeStatus, String tradeTime,
    String tradeNumber) {
    Criteria c = sf.getCurrentSession().createCriteria(Shopnote.class);// 初始化Criteria
    if(userPid!=null&&
    !userPid.equals("")){
    c.add(Restrictions.like("userPid",userPid,MatchMode.ANYWHERE));//根据userPid查询
    }
    if(tradeStatus>-1){
    c.add(Restrictions.sqlRestriction("tradeStatus ="+tradeStatus));//根据交易状态查询
    }
    if(tradeTime!=null&&
    !tradeTime.equals("")){
    c.add(Restrictions.like("tradeTime",tradeTime,MatchMode.ANYWHERE));//根据交易时间查询
    }
    if(tradeNumber!=null&&
    !tradeNumber.equals("")){
    c.add(Restrictions.like("tradeNumber",tradeNumber,MatchMode.ANYWHERE));//根据交易流水号查询
    }
    return c.list();
    }