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;
}
여기 내 문제는 내가 반복 루프를 실행할 때마다 그것을 반복하는 멈추지 않을 것입니다하지만이 반복하고 있습니다. 나는 그 테이블에 2 행의 데이터 만 가지고있다. 이 반복이 왜 계속되고 멈추지 않을지 말해 줄 수 있습니까? 분명히 주어진 CUSTOMER_ID 값을 기반으로 해당 테이블 내부의 모든 데이터를 반복하고 싶습니다.
나는 각 루프마다 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()는 반복의 내부에서 사용하지 않는 한 다음 요소와 단일 요소 만 반환합니다. –
이 경우 반복 할 때마다 next()가 처음 루프를 반환 할 때마다 매번 다시 시작합니다. BTW 또한 쿼리를 수행하고 이미 비싸고, 전체적으로, 마음이 부 풀리는 비효율적 인 작업을 위해 각 필드에 대해 다시 시작합니다. –