Java JDBC对象列表IndexOutOfBounds

Java JDBC对象列表IndexOutOfBounds,java,jdbc,Java,Jdbc,我试图做的是,我希望能够从多个JDBC对象中提取字段,这样我就可以使用它来为客户机命名一个文件夹。我添加了每个必需对象的实例,以检索数据,命名客户机文件夹和要放入该文件夹的文件,以及需要放入该文件的数据 这是我遇到问题的代码 java.util.List<TransactionItemBean> transactionItems = transactionItemDAO.findAllForTransaction(transactionNo); java.util.List<T

我试图做的是,我希望能够从多个JDBC对象中提取字段,这样我就可以使用它来为客户机命名一个文件夹。我添加了每个必需对象的实例,以检索数据,命名客户机文件夹和要放入该文件夹的文件,以及需要放入该文件的数据

这是我遇到问题的代码

java.util.List<TransactionItemBean> transactionItems = transactionItemDAO.findAllForTransaction(transactionNo);
java.util.List<TransactionBean> transactions = transactionDAO.findAll();
java.util.List<BuyerBean> buyers = buyerDAO.findAll();
java.util.List<VehicleBean> vehicles = vehicleDAO.findAll();
    for (int i = 0; i <transactionItems.size(); i++) {
        String client = buyers.get(transactions.get(transactionNo-1).getBuyerId()).getSurname_organization();
        String vehiclePlate = vehicles.get(transactionItems.get(i).getVehicleId()).getPlate_no();
        String vehicleMake = vehicles.get(transactionItems.get(i).getVehicleId()).getMake();
        String vehicleModel = vehicles.get(transactionItems.get(i).getVehicleId()).getModel();
java.util.List transactionItems=transactionItemDAO.findAllForTransaction(transactionNo);
java.util.List transactions=transactionDAO.findAll();
java.util.List buyers=buyerDAO.findAll();
java.util.List vehicles=vehicleDAO.findAll();

对于(int i=0;i当您从列表中获取项目时,它是通过列表索引获得的。即:

  buyers.get(i)
将返回买家列表中的第i个项目。您将买家id作为索引传递。此id可能与列表中买家对象的索引不对应。假设您有100个买家,其中一个买家的id为230。那么您将实际尝试从仅包含100个项目的列表中获取第230个项目。因此IndexOutOfBo无性感觉


这似乎是访问所有列表的方式存在的问题。似乎您需要实现某种方式来搜索列表。

文森特·拉姆达尼是对的

您可以使用地图来存储车辆,而不是使用列表

映射存储键值对。 transactionItems.get(i).getVehicleId()将是您的映射键,
VehilceBean将是您的价值。

哪一行引发异常?您如何知道transactionNo-1在事务中?什么是
transactionNo
?为什么使用
transactionNo-1
而不是
i
?您能显示异常堆栈跟踪吗?抱歉,transactionNo被传递到函数中,我在没有-1,它正在检索下一个元素,但不是我需要的元素异常跟踪只指向字符串client=buyers.get(transactions.get(transactionNo-1.getBuyerId()).getNames\u organization();其想法是不会从数据库中删除任何内容,因此我真正缺少的是id上的-1,因为id从1开始,索引从0开始