Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么它会对第二个查询抛出异常?_Java_Hibernate - Fatal编程技术网

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()
是否大于零