Spring的java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常处理方法

时间:2023-03-09 06:20:58
Spring的java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常处理方法

使用Spring提供的模板类HibernateDaoSupport,如果单纯的使用'命名参数'的形式编写HQL语句如:

 public class UserDaoImpl extends HibernateDaoSupport implements IUser {

     @Override
public User login(String userName, String pwd) {
String hql="from User as u where u.username=:userName and u.password=:pwd";
/*String hql="from User as u where u.username=? and u.password=?";*/
List<User> list=getHibernateTemplate().find(hql,userName,pwd);
if(list==null||list.size()<1){
return null;
}else {
return list.get(0);
} }
}

则会报java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常

问题发生的原因是:1.hql语句里不需要参数,却添加了一个参数,删掉添加参数的语句就可以了,

           2.参数用“?”时 ,周围不能加单引号,否则被当作字符串处理了

问题的解决方案:是把上面的使用【命名参数】的HQL语句直接改成以【问号的方式传参】,就可以解决这个问题了