我創建了一個名爲Reservations的簡單表,該表包含以下列:ID,DUE_DATE,PRODUCTS_PAID,RESERVATION_NAME,SALE,TOTAL_SELL_PRICE和CUSTOMER_ID。while循環不會停止循環Java
現在我想要做的是我想遍歷CUSTOMER_ID給定值的表。這裏是我的方法,通過CUSTOMER_ID收集所有這些列中的數據:
public Collection<Reservations> findReservation(int cuID) {
EntityManager em = getEntityManager();
Query q = em.createQuery("SELECT r FROM Reservations r WHERE r.customerData.id = :cID");
q.setParameter("cID", cuID);
List results = q.getResultList();
return results;
}
我在這裏的問題是,每當我跑迭代循環就不會停止迭代,但它繼續重複。我在該表中只有兩行數據。你能告訴我爲什麼這個迭代繼續下去,不會停止嗎?顯然,我只是想根據給定的CUSTOMER_ID值迭代該表內的所有數據。
我已經嘗試過循環,每個循環,while while循環和非它們的作品。它必須與我的代碼有關。這裏是一個while循環,我測試了,但休息一下就好了循環就不會停止迭代:
for(Iterator itr2 = rd.findReservation(cuID).iterator(); itr2.hasNext();){
rModel.addRow(Arrays.asList(rd.findReservation(cuID).iterator().next().getId(),
rd.findReservation(cuID).iterator().next().getReservationName(),
rd.findReservation(cuID).iterator().next().getCustomerData().getCustomerName(),
rd.findReservation(cuID).iterator().next().getCustomerData().getCustomerType(),
rd.findReservation(cuID).iterator().next().getDueDate(),
rd.findReservation(cuID).iterator().next().getTotalSellPrice(),
rd.findReservation(cuID).iterator().next().getSale(),
rd.findReservation(cuID).iterator().next().getProductsPaid(),
"Print"));
}
如果你不知道什麼是CUID,它只是這是從表列獲得一個整數值。這個值是customerID。它運作良好。所以它不應該影響代碼。所有幫助表示讚賞:)
這'rd.findReservation(CUID).iterator()的next()'給你的第一個結果從這個集合中的每個時間。你確定你不是每個結果,不是一次又一次? – 2013-04-26 10:00:21
我知道如何返回單個或結果列表。這不是問題,我知道.next()只會返回下一個和單個元素,除非您在迭代中使用它。 – 2013-04-26 15:21:56
在這種情況下,您每次都會重新開始,所以next()只會返回第一個,無論您循環多少次。順便說一句,您還在執行查詢併爲每個字段重新開始,對於已經非常昂貴的操作來說,總的來說,這種操作效率不高。 – 2013-04-26 15:24:27