From bdf3e5eec8540431f50f17ac58ddce97c699f662 Mon Sep 17 00:00:00 2001 From: Jihun Kim Date: Sat, 26 Jul 2025 23:38:09 +0900 Subject: [PATCH] =?UTF-8?q?refactor(Reservation):=20NonUniqueResultExcepti?= =?UTF-8?q?on=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reservation/service/ReservationService.java | 3 ++- .../reservation/repository/ReservationRepository.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java index e0177ccf..abae93f4 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java @@ -94,6 +94,7 @@ public List getAllWaitingUserDetails(Long storeId) { List> waitingList = waitingRedisRepository.getAllWaitingWithScore(storeId); System.out.println(waitingList); + // TODO N + 1 발생 -> 개선 필요 return waitingList.stream() .map(tuple -> { String userId = tuple.getValue(); @@ -109,7 +110,7 @@ public List getAllWaitingUserDetails(Long storeId) { String reservationId = String.valueOf( ThreadLocalRandom.current().nextInt(1, 100)); - Optional reservationOpt = reservationRepository.findByStore_StoreIdAndUserIdAndRequestedAtBetween( + Optional reservationOpt = reservationRepository.findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc( storeId, Long.valueOf(userId), LocalDate.now().atStartOfDay(), LocalDate.now().atTime(LocalTime.MAX)); if (reservationOpt.isPresent()) { Reservation reservation = reservationOpt.get(); diff --git a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java index 96c7639f..f3e74b38 100644 --- a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java +++ b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/reservation/repository/ReservationRepository.java @@ -22,6 +22,9 @@ public interface ReservationRepository extends JpaRepository Optional findByStore_StoreIdAndUserIdAndRequestedAtBetween( Long storeId, Long userId, LocalDateTime start, LocalDateTime end); + Optional findFirstByStore_StoreIdAndUserIdAndRequestedAtBetweenOrderByRequestedAtDesc( + Long storeId, Long userId, LocalDateTime start, LocalDateTime end); + List findAllByStore_StoreIdAndStatusInAndRequestedAtBetween( Long storeId, List statuses, LocalDateTime start, LocalDateTime end); Optional findByStore_StoreIdAndUserIdAndStatusInAndRequestedAtBetween(