Java 为什么它会对第二个查询抛出异常?
我尝试更新某些信息时出错。错误如下:Java 为什么它会对第二个查询抛出异常?,java,hibernate,Java,Hibernate,我尝试更新某些信息时出错。错误如下: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.RangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at com.app.dao.RolesDAO.getUserRoleByUserID(
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.app.dao.RolesDAO.getUserRoleByUserID(RolesDAO.java:42)
at com.app.business.UserRolesBusiness.updateInformation(UserRolesBusiness.java:21)
at com.app.business.UserRolesBusiness.main(UserRolesBusiness.java:29)
调试之后,我看到业务层可以很好地检索用户ID。但后来没有更新信息。我的代码实现如下所示:
业务层实现:
public void updateInformation(String userName, String roleName) {
Users user = dao1.getUserInfo(userName);
String userIDString = Integer.toString(...);
Roles updateRole = dao2.getUserRoleByUserID(userIDString);
updateRole.setRole(roleName);
r.updateRole(updateRole);
}
DAO层实现:
public void updateInformation(String userName, String roleName) {
Users user = dao1.getUserInfo(userName);
String userIDString = Integer.toString(...);
Roles updateRole = dao2.getUserRoleByUserID(userIDString);
updateRole.setRole(roleName);
r.updateRole(updateRole);
}
getUserInfo方法:
.....
user = ... query.list().get(0);
....
getUserRoleByUserID方法:
....
role = ... query.list().get(0);
....
引发异常“IndexOutOfBoundsException”的原因是什么?如何解决该问题。它已成功执行第一个查询,但未执行第二个查询。有什么建议吗?您正在调用
query.list()。在不检查列表大小的情况下获取(0)
两次。如果其中一个为空,则结果将获得一个索引AutofBoundsException
。在尝试获取第一个列表元素之前,调用isEmpty()
方法或验证size()
是否大于零