【问题记录】使用getHibernateTemplate().find()方法的get(index)方法

时间:2022-12-14 22:05:37

做SSH项目的时候,写了这样一段代码:

public EmployeeVo getEmpByNo(String empNo) {
EmployeeVo empVo = null;
String hql = "from Employee where empNo = ?";
List<Employee> empList = getHibernateTemplate().find(hql, empNo);

if (empList!=null && empList.size()>0) {
Employee emp = empList.get(0);
empVo = new EmployeeVo();
BeanUtils.copyProperties(emp, empVo);
}
return empVo;
}

这段代码是正确的

但是要注意的是,如下的写法是不正确的:

Employee emp = (Employee) getHibernateTemplate().find(hql, empNo).get(0);

你不能一上来就get(0),因为你还不能确定getHibernateTemplate().find()返回的list是否有结果。

如果没结果,即size=0,此时你却执行get(0),那么就会抛IndexOutOfBoundException异常。

你必须先加上这样一句判断,成功才执行上面的代码:

if (getHibernateTemplate().find(hql, empNo).size() > 0)

考虑周到了,才能避免未知的错误发生!