2016-04-25 18 views
0

私の問題は、1回の結果しか得られないということです。在庫が10未満のすべてのデータを取得したいと思います。オブジェクトデータをarraylistに追加するにはどうすればよいですか?Hibernate:クエリから取得したすべての値をArrayListに保存する

 String lowStock = "SELECT MedcineID, MName, Quantity FROM medcineinventory WHERE Quantity < :stock"; 
     SQLQuery query = session.createSQLQuery(lowStock); 

     query.setParameter("stock", 10); 
     List<Object[]> stocks = query.list(); 
     ArrayList<Inventory> allResults = new ArrayList<Inventory>(); 
      Inventory iv = new Inventory(); 

      for(Object[] data : stocks){ 

       iv.setMedcineID((Integer) data[0]); 
       iv.setMName((String) data[1]); 
       iv.setQuantity((Integer)data[2]); 

       allResults.add(iv); 

      }  

     tx.commit(); 
     session.close(); 

    return allResults; 

答えて

2

でループのためにあなたを交換してください:あなたは結果のリストを通過するたびに、あなたが最初のivのデータを変更し、新しいを追加しているためだ

for(Object[] data : stocks){ 
    Inventory iv = new Inventory(); 
    iv.setMedcineID((Integer) data[0]); 
    iv.setMName((String) data[1]); 
    iv.setQuantity((Integer)data[2]); 
    allResults.add(iv); 
} 

結果リストへのエントリ。最終的に、最後のリストに3つのエントリがあり、取得されたデータの最後の要素を表す同じ値があります。

ループ内にivの作成を移動するたびに、新しい要素が作成されます。

+0

ありがとうGHajba:D – Baadshah

2
   for(Object[] data : stocks){ 
       Inventory iv = new Inventory(); 
       iv.setMedcineID((Integer) data[0]); 
       iv.setMName((String) data[1]); 
       iv.setQuantity((Integer)data[2]); 

       allResults.add(iv); 

       } 

ためのループ内に新しいインベントリオブジェクトを作成し、ArrayListにそれを追加します。あなたがループ内であなたのInventory iv = new Inventory();を移動する必要があり、この

+0

ありがとうPriyamal – Baadshah

+0

@Baadshahよろしくお願いします! – Priyamal

関連する問題