JDBC对象列表IndexOutOfBounds

时间:2012-12-18 16:50:44

标签: java jdbc

我想要做的是我希望能够从多个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();

从我可以看到的问题似乎是由嵌套的JDBC对象引起的,但我不确定如何解决这个问题

2 个答案:

答案 0 :(得分:2)

当您从列表中获取项目时,它是按列表索引。那就是:

  buyers.get(i)

将从买家列表中返回第i项。您将买方ID作为索引传递。此id可能与列表中买方对象的索引不对应。假设您有100个买家,其中一个的ID为230.那么您实际上将尝试从列表中获取第230个项目,其中只有100个项目。因此IndexOutOfBoundsException。

这似乎是您访问所有列表的方式的问题。您似乎需要以某种方式搜索列表。

答案 1 :(得分:0)

Vincent Ramdhanie是对的。

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

地图存储键值对。 transactionItems.get(i).getVehicleId()将是你的地图键, 和VehilceBean将是你的价值。