From e6937a5002552ce26db465504aa825d543d3e17a Mon Sep 17 00:00:00 2001 From: Yeonri Date: Fri, 20 Feb 2026 23:52:51 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20/applications=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=20=ED=99=9C=EC=84=B1=20=EC=A7=80=EC=9B=90=EC=84=9C=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=8B=9C=20500=20=EC=98=A4=EB=A5=98=20=EB=B0=A9?= =?UTF-8?q?=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 활성 지원서 조회를 최신 1건 기준 메서드로 변경 - 지원서 제출 로직과 테스트 코드를 변경된 조회 메서드명에 맞춰 동기화 --- .../application/repository/ApplicationRepository.java | 11 ++--------- .../service/ApplicationSubmissionService.java | 3 ++- .../service/ApplicationSubmissionServiceTest.java | 4 +++- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java index 10bf6c04e..0df078b49 100644 --- a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java +++ b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java @@ -27,17 +27,10 @@ public interface ApplicationRepository extends JpaRepository """) List findAllByUnivApplyInfoIds(@Param("univApplyInfoIds") List univApplyInfoIds, @Param("status") VerifyStatus status, @Param("termId") long termId); - @Query(""" - SELECT a - FROM Application a - WHERE a.siteUserId = :siteUserId - AND a.termId = :termId - AND a.isDelete = false - """) - Optional findBySiteUserIdAndTermId(@Param("siteUserId") long siteUserId, @Param("termId") long termId); + Optional findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(long siteUserId, long termId); default Application getApplicationBySiteUserIdAndTermId(long siteUserId, long termId) { - return findBySiteUserIdAndTermId(siteUserId, termId) + return findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(siteUserId, termId) .orElseThrow(() -> new CustomException(APPLICATION_NOT_FOUND)); } diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java index 9d7fcbe1f..e8c1144b4 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java @@ -62,7 +62,8 @@ public ApplicationSubmissionResponse apply(long siteUserId, ApplyRequest applyRe Long secondChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.secondChoiceUnivApplyInfoId(); Long thirdChoiceUnivApplyInfoId = univApplyInfoChoiceRequest.thirdChoiceUnivApplyInfoId(); - Optional existingApplication = applicationRepository.findBySiteUserIdAndTermId(siteUser.getId(), term.getId()); + Optional existingApplication = + applicationRepository.findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(siteUser.getId(), term.getId()); int updateCount = existingApplication .map(application -> { validateUpdateLimitNotExceed(application); diff --git a/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java b/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java index 91877d9d9..4b3442536 100644 --- a/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java +++ b/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java @@ -89,7 +89,9 @@ void setUp() { ApplicationSubmissionResponse response = applicationSubmissionService.apply(user.getId(), request); // then - Application savedApplication = applicationRepository.findBySiteUserIdAndTermId(user.getId(), term.getId()).orElseThrow(); + Application savedApplication = applicationRepository + .findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(user.getId(), term.getId()) + .orElseThrow(); assertAll( () -> assertThat(response.totalApplyCount()) .isEqualTo(APPLICATION_UPDATE_COUNT_LIMIT), From 104010964de9345d0f002abdb2a06dd85a80d932 Mon Sep 17 00:00:00 2001 From: Yeonri Date: Fri, 20 Feb 2026 23:58:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=ED=99=9C=EC=84=B1=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=EC=84=9C=20=EC=A4=91=EB=B3=B5=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=EC=9D=98=20=EA=B7=BC=EB=B3=B8=20=ED=95=B4=EA=B2=B0=20TODO=20?= =?UTF-8?q?=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 최신 1건 선택 로직이 임시 회피임을 주석으로 명확화 - DB 유일성 제약 도입 후 우회 조회 제거 필요사항을 기록 --- .../application/repository/ApplicationRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java index 0df078b49..f9dda3096 100644 --- a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java +++ b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java @@ -27,6 +27,9 @@ public interface ApplicationRepository extends JpaRepository """) List findAllByUnivApplyInfoIds(@Param("univApplyInfoIds") List univApplyInfoIds, @Param("status") VerifyStatus status, @Param("termId") long termId); + // TODO: 근본 해결 필요 + // 지원서 유일성은 DB 제약으로 강제하고 + // 이 조회는 임시 회피 로직을 제거하는 방향으로 수정 필요. Optional findTopBySiteUserIdAndTermIdAndIsDeleteFalseOrderByIdDesc(long siteUserId, long termId); default Application getApplicationBySiteUserIdAndTermId(long siteUserId, long termId) {