hibernate 根据占位符设值,该怎么解决

hibernate 根据占位符设值请看:sqlstr.append( and p.product_Name like%:productName%)Query countQ

hibernate 根据占位符设值
请看:
sqlstr.append(" and p.product_Name like '%:productName%'");

Query countQuery = session.createSQLQuery(sqlstr.toString());
query.setString("productName", pq.getProductName());

 是根据productName名去设置值;为啥不行?

[解决办法]
and p.product_Name like :productName这样行不行啊
[解决办法]

Java code
    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;    }
[解决办法]
sqlstr.append(" and p.product_Name like '%':productName'%'");
不知道这样行不行。

不过用Hibernate还真没有像楼主这样搞过。
[解决办法]
and p.product_Name like :productName


query.setString("productName","%"+pq.getProductName()+"%");
[解决办法]
探讨

5楼的做法是错误的;4,6楼的做法一样的;因为我这用的是hibernate中的 query.setProperties(pageRequest);

setProperties 方法是根据类的属性去设值的,所以你们的想法还是没能解决我的问题,我在想hibernate中有没有指定like查询的设值方法呢

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

探讨
请看:
sqlstr.append(" and p.product_Name like '%:productName%'");

Query countQuery = session.createSQLQuery(sqlstr.toString());
query.setString("productName", pq.getProductName());

是根据productNa……

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