2 nicholaskg NicholasKg 于 2016.04.07 23:43 提问

SSH框架查询数据库信息,当无此信息时报错

dao层:
public Users findByName(Users user){
return (Users) getSession().createCriteria(Users.class).add(Restrictions.eq("username", user.getUsername())).list().get(0);
};
service层:
public Users findByName(Users user) {
return userDao.findByName(user);
}

具体实现:
Users u = userService.findByName(user); 

当数据库存在此用户名时没问题,没有用户名就会报错
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

root cause

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.rangeCheck(ArrayList.java:653)
java.util.ArrayList.get(ArrayList.java:429)

2个回答

devmiao
devmiao   Ds   Rxr 2016.04.07 23:45
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.08 06:48
  你的程序处理有问题啊,查不到结果是返回的列表为空,就不能再取列表值否则就会数组越界了。那你需要对查询结果进行判断啊,当没有查到数据时你的.list()返回的列表长度为0,那么你就不能再get(0)了啊。作下判断这个返回的list().size()非零再取,否则不处理。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!