from Person person where person.firstname = '? '

解决方案 »

  1.   

    setString会根据数据库类型自动在参数处加上单引或双引
    因此用from Person where firstname = ? 及 from Person where firstname like ?
    而百分号通常在设置参数值时随值传入。应该不太支持from Person where firstname like %?%或者from Person where firstname like '%?%'这种写法。另外也可以考虑用这种写法:criteria.add(Expression.like("firstname ", "%" + sFirstname + "%"));
      

  2.   

    String firstname="j";
    String hql = "from Person where firstname like ?";
    Query q = session.createQuery(hql);
    q.setParameter(0,"%"+firstname+"%");
      

  3.   

    或者在使用QBC方式时,采用MatchMode.ANYWHERE来指定模糊查询.
    criteria.add(Expression.like("firstname ", firstname, MatchMode.ANYWHERE));
      

  4.   

    from Person where firstname like ?
      

  5.   

    from Person where firstname='"+?+"'
      

  6.   

    第二个:from Person where firstname like ?然后在为命名参数赋值时:参数值  =“%”+ 参数值 +“%”