Skip to content

Commit 34c899a

Browse files
authored
fix : 테스트케이스 삭제 시 쿼리 미발생 문제 해결 (JPA 양방향 관계 동기화) (#199)
* fix : 백엔드 도메인 주소 변경 이후 swagger 설정 변경 * fix : 테스트케이스 삭제 API 동작 안 하는 문제 해결 - Problem(부모) 엔티티가 영속성 컨텍스트에 로딩된 상태에서 Testcase(자식)만 삭제 시도 시, 트랜잭션 커밋 시점에 부모의 컬렉션에 남아있는 자식 객체가 Cascade 설정으로 인해 다시 저장되는 현상 수정 - 삭제 로직 수행 전, 부모 객체의 컬렉션에서도 해당 자식 객체를 제거하는 로직 수행하도록 함
1 parent 0a2618e commit 34c899a

File tree

3 files changed

+4
-7
lines changed

3 files changed

+4
-7
lines changed

src/main/java/org/ezcode/codetest/domain/problem/service/TestcaseDomainService.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import java.util.List;
44

55
import org.ezcode.codetest.domain.problem.exception.ProblemException;
6-
import org.ezcode.codetest.domain.problem.exception.TestcaseException;
76
import org.ezcode.codetest.domain.problem.exception.code.ProblemExceptionCode;
8-
import org.ezcode.codetest.domain.problem.exception.code.TestcaseExceptionCode;
97
import org.ezcode.codetest.domain.problem.model.entity.Problem;
108
import org.ezcode.codetest.domain.problem.model.entity.Testcase;
119
import org.ezcode.codetest.domain.problem.repository.TestcaseRepository;
@@ -50,9 +48,8 @@ public void removeTestcase(Problem problem, Long testcaseId) {
5048

5149
Testcase findTestcase = testcaseRepository.findByTestcase(testcaseId);
5250

53-
// 테스트 케이스 문제와 요청한 값의 문제 id 일치한가 여부
54-
if(!findTestcase.problemIdMatched(problem.getId())) {
55-
throw new TestcaseException(TestcaseExceptionCode.TESTCASE_NOT_FOUND);
51+
if (problem.getTestcases() != null) {
52+
problem.getTestcases().remove(findTestcase);
5653
}
5754

5855
testcaseRepository.delete(findTestcase);

src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/problem/TestcaseRepositoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public Testcase findByTestcase(Long testcaseId) {
4242
@Override
4343
public void delete(Testcase testcase) {
4444

45-
testcaseJpaRepository.delete(testcase);
45+
testcaseJpaRepository.deleteById(testcase.getId());
4646
}
4747

4848
}

src/main/java/org/ezcode/codetest/infrastructure/swagger/config/SwaggerConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@OpenAPIDefinition(
1515
servers = {
1616
@Server(
17-
url = "https://ezcode.my", // ← 슬래시 없이 호스트만!
17+
url = "https://api.ezcode.my", // ← 슬래시 없이 호스트만!
1818
description = "Production server"
1919
)
2020
},

0 commit comments

Comments
 (0)