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 + "%"));
String firstname="j"; String hql = "from Person where firstname like ?"; Query q = session.createQuery(hql); q.setParameter(0,"%"+firstname+"%");
因此用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 + "%"));
String hql = "from Person where firstname like ?";
Query q = session.createQuery(hql);
q.setParameter(0,"%"+firstname+"%");
criteria.add(Expression.like("firstname ", firstname, MatchMode.ANYWHERE));