From 4d63a14977e37336c3fb225246b84e7d9553cee9 Mon Sep 17 00:00:00 2001 From: eeeeeaaan Date: Wed, 20 Aug 2025 22:33:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FIX]=20=ED=95=84=ED=84=B0=EB=A7=81=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GuesthouseController.java | 11 ++-- .../repository/GuesthouseRepositoryImpl.java | 52 ++++++++++++++----- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/sumte/guesthouse/controller/GuesthouseController.java b/src/main/java/com/sumte/guesthouse/controller/GuesthouseController.java index 62c3f82..f6d438a 100644 --- a/src/main/java/com/sumte/guesthouse/controller/GuesthouseController.java +++ b/src/main/java/com/sumte/guesthouse/controller/GuesthouseController.java @@ -59,11 +59,12 @@ public class GuesthouseController { name = "Guesthouse Register Example", value = """ { - "name": "도심 속 게스트하우스", - "description": "시장 도보 10분, 해수욕장 15분", - "basePrice": 35000, - "optionService": ["조식포함"], - "targetAudience": ["남성전용"] + "name": "필터링 될 게스트하우스", + "addressRegion": "제주특별자치도", + "addressDetail": "어쩌구길 12", + "information": "시장 도보 10분, 해수욕장 도보 15분 거리", + "optionServices": ["조식포함", "여성전용"], + "targetAudience": ["애견동반"] } """ ) diff --git a/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java b/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java index 54c7d77..27d4d16 100644 --- a/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java +++ b/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java @@ -156,22 +156,50 @@ public Page searchFiltered(GuesthouseSearchRequestDTO dto, } } + // if (dto.getOptionService() != null && !dto.getOptionService().isEmpty()) { + // condition.and(guesthouse.id.in( + // JPAExpressions.select(guesthouseOptionServices.guesthouse.id) + // .from(guesthouseOptionServices) + // .join(guesthouseOptionServices.optionServices, optionService) + // .where(optionService.name.in(dto.getOptionService())) + // )); + // } + // + // if (dto.getTargetAudience() != null && !dto.getTargetAudience().isEmpty()) { + // condition.and(guesthouse.id.in( + // JPAExpressions.select(guesthouseTargetAudience.guesthouse.id) + // .from(guesthouseTargetAudience) + // .join(guesthouseTargetAudience.targetAudience, targetAudience) + // .where(targetAudience.name.in(dto.getTargetAudience())) + // )); + // } if (dto.getOptionService() != null && !dto.getOptionService().isEmpty()) { - condition.and(guesthouse.id.in( - JPAExpressions.select(guesthouseOptionServices.guesthouse.id) - .from(guesthouseOptionServices) - .join(guesthouseOptionServices.optionServices, optionService) - .where(optionService.name.in(dto.getOptionService())) - )); + for (String svc : dto.getOptionService()) { + condition.and( + guesthouse.id.in( + JPAExpressions + .select(guesthouseOptionServices.guesthouse.id) + .from(guesthouseOptionServices) + .join(guesthouseOptionServices.optionServices, optionService) + .where(optionService.name.eq(svc)) + ) + ); + } } + // targetAudience: 각 값이 모두 포함된 게스트하우스만 (AND) if (dto.getTargetAudience() != null && !dto.getTargetAudience().isEmpty()) { - condition.and(guesthouse.id.in( - JPAExpressions.select(guesthouseTargetAudience.guesthouse.id) - .from(guesthouseTargetAudience) - .join(guesthouseTargetAudience.targetAudience, targetAudience) - .where(targetAudience.name.in(dto.getTargetAudience())) - )); + for (String aud : dto.getTargetAudience()) { + condition.and( + guesthouse.id.in( + JPAExpressions + .select(guesthouseTargetAudience.guesthouse.id) + .from(guesthouseTargetAudience) + .join(guesthouseTargetAudience.targetAudience, targetAudience) + .where(targetAudience.name.eq(aud)) + ) + ); + } } NumberExpression avgScoreExpr = Expressions.numberTemplate( From c86046ea20477a27ea3f276648c7ce57a85dfc56 Mon Sep 17 00:00:00 2001 From: eeeeeaaan Date: Thu, 21 Aug 2025 10:15:21 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FIX]=20=EC=A3=BC=EC=84=9D=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/GuesthouseRepositoryImpl.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java b/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java index 27d4d16..ea034c4 100644 --- a/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java +++ b/src/main/java/com/sumte/guesthouse/repository/GuesthouseRepositoryImpl.java @@ -156,23 +156,6 @@ public Page searchFiltered(GuesthouseSearchRequestDTO dto, } } - // if (dto.getOptionService() != null && !dto.getOptionService().isEmpty()) { - // condition.and(guesthouse.id.in( - // JPAExpressions.select(guesthouseOptionServices.guesthouse.id) - // .from(guesthouseOptionServices) - // .join(guesthouseOptionServices.optionServices, optionService) - // .where(optionService.name.in(dto.getOptionService())) - // )); - // } - // - // if (dto.getTargetAudience() != null && !dto.getTargetAudience().isEmpty()) { - // condition.and(guesthouse.id.in( - // JPAExpressions.select(guesthouseTargetAudience.guesthouse.id) - // .from(guesthouseTargetAudience) - // .join(guesthouseTargetAudience.targetAudience, targetAudience) - // .where(targetAudience.name.in(dto.getTargetAudience())) - // )); - // } if (dto.getOptionService() != null && !dto.getOptionService().isEmpty()) { for (String svc : dto.getOptionService()) { condition.and(