请看:
sqlstr.append(" and p.product_Name like  '%:productName%'");Query countQuery = session.createSQLQuery(sqlstr.toString());
query.setString("productName", pq.getProductName()); 是根据productName名去设置值;为啥不行?

解决方案 »

  1.   

    and p.product_Name like :productName这样行不行啊
      

  2.   


        public String searchByKey(){
            if(key!=null && type!=null && key.length()>0 && type.length()>0){
    condition="where b.type=? and b.title like ?";
    allBook= bookService.search(condition,type,"%"+key+"%");
    }
        }
        public List<Book> search(String condition, String type, String key) {
    Session session = this.getSession();
    List list=session.createQuery("from Book b "+condition).setString(0, type).setString(1, "%"+key+"%").list();
    session.close();
    return list;
    }
      

  3.   

    sqlstr.append(" and p.product_Name like  '%':productName'%'");
    不知道这样行不行。不过用Hibernate还真没有像楼主这样搞过。
      

  4.   

    and p.product_Name like :productName
    query.setString("productName","%"+pq.getProductName()+"%");
      

  5.   

    5楼的做法是错误的;4,6楼的做法一样的;因为我这用的是hibernate中的 query.setProperties(pageRequest);setProperties 方法是根据类的属性去设值的,所以你们的想法还是没能解决我的问题,我在想hibernate中有没有指定like查询的设值方法呢
      

  6.   

    hibernate对象查询直接支持LIKE查询。
      

  7.   

    你的写法不对啊 。
    应该是:
    sqlStr.append(" and p.product_Name like :productName");
    Query countQuery = session.createSQLQuery(sqlstr.toString());
    query.setString("productName", "%"+pq.getProductName()+"%");
      

  8.   

    逆向思维哦~~
    sqlStr.append(" and p.product_Name like :productName");
    Query countQuery = session.createSQLQuery(sqlstr.toString());
    query.setString("productName", "%"+pq.getProductName()+"%");