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 人のバイヤーがいて、そのうちの 1 人の ID が 230 であるとします。この場合、実際には 100 アイテムしかないリストから 230 番目のアイテムを取得しようとします。したがって、IndexOutOfBoundsException です。

そして、それはあなたがすべてのリストにアクセスしている方法に問題があるようです. リストを検索する何らかの方法を実装する必要があるようです。

于 2012-12-18T16:56:38.240 に答える
0

VincentRamdhanieは正しいです。

リストを使用する代わりに、マップを使用して車両を保存することができます。

マップはキーと値のペアを格納します。transactionItems.get(i).getVehicleId()がマップキーになり、VehilceBeanが値になります。

于 2012-12-18T17:04:55.790 に答える