有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDBC对象列表IndexOutOfBounds

我试图做的是,我希望能够从多个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) 个答案

  1. # 1 楼答案

    当您从列表中获取一个项目时,它是通过列表索引进行的。即:

      buyers.get(i)
    

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

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

  2. # 2 楼答案

    文森特·拉姆达尼是对的

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

    映射存储键值对。 交易项目。得到(我)。getVehicleId()将是您的地图键, VehilceBean就是你的价值所在