标签:
使用Spring提供的模板类HibernateDaoSupport,如果单纯的使用‘命名参数‘的形式编写HQL语句如:
1 public class UserDaoImpl extends HibernateDaoSupport implements IUser { 2 3 4 @Override 5 public User login(String userName, String pwd) { 6 String hql="from User as u where u.username=:userName and u.password=:pwd"; 7 /*String hql="from User as u where u.username=? and u.password=?";*/ 8 List<User> list=getHibernateTemplate().find(hql,userName,pwd); 9 if(list==null||list.size()<1){ 10 return null; 11 }else { 12 return list.get(0); 13 } 14 15 } 16 }
则会报java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常
问题发生的原因是:1.hql语句里不需要参数,却添加了一个参数,删掉添加参数的语句就可以了,
2.参数用“?”时 ,周围不能加单引号,否则被当作字符串处理了
问题的解决方案:是把上面的使用【命名参数】的HQL语句直接改成以【问号的方式传参】,就可以解决这个问题了
Spring的java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!异常处理方法
标签:
原文地址:http://www.cnblogs.com/Allen974103107/p/4787596.html