public static List borrowBook(String bookname) { Query query = HibernateSessionFactory.getSession().createQuery(
"from Book where bookname like '%'?'%'"); query.setString(0, bookname); List list = query.list(); return list;
}
模糊查询时出错,query.setString(0, bookname);和query.setString(0, "%" +bookname+ "%");我都试过!不行。
希望帅哥美女帮忙解决一下。

解决方案 »

  1.   

    "from Book where bookname like '%?%'";试试看看
      

  2.   

    query.setString(0, bookname);这里是从1开始的,而且你的第一种方法拼的HQL语句有点小问题
    session.createQuery("from Book where bookname like '%"+OId+"%'");
      

  3.   

    建议使用此方法:Query query = HibernateSessionFactory.getSession().createQuery(
    "from Book where bookname like :bkname");query.setString("bkname", "%"+bookname+"%");
      

  4.   

    Query query = HibernateSessionFactory.getSession().createQuery(
    "from Book where bookname like '%'?'%'");query.setString(0, bookname);
    要这样写:
    Query query = HibernateSessionFactory.getSession().createQuery(
    "from Book where bookname like ?");query.setString(0, "%"+ bookname + "%");
    这样就OK了。
      

  5.   

    LZ  模糊查询建议你用 Criteria 
    eg:
    Criteria criteria = this.getSession(true).createCriteria(Book.class);
    if (bookname != null) criteria.add(Expression.like("bookname ", bookname )); return criteria.list();
      

  6.   

    别在这里误导人了。JDBC是从1开始,Hibernate从0开始。
      

  7.   


    String hql="from Book where bookname like ?";楼主这样就OK了。
    2楼,hibernate是从0开始的=。=