1

我想要做的是我希望能够从多个 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 对象引起的,但我不确定如何解决这个问题

4

2 回答 2

2

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

  buyers.get(i)

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

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

于 2012-12-18T16:56:38.240 回答
0

文森特·拉姆达尼是对的。

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

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

于 2012-12-18T17:04:55.790 回答