Skip to content

Commit d9ce670

Browse files
committed
merge: main → dev 롤백 변경사항 동기화 (conflict 해결)
2 parents 9a26cce + 7254774 commit d9ce670

1 file changed

Lines changed: 8 additions & 13 deletions

File tree

src/main/java/org/runnect/server/publicCourse/service/PublicCourseService.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.runnect.server.common.exception.PermissionDeniedException;
1414
import org.runnect.server.common.module.convert.CoordinatePathConverter;
1515
import org.runnect.server.course.entity.Course;
16+
import org.runnect.server.record.entity.Record;
1617
import org.runnect.server.course.repository.CourseRepository;
1718
import org.runnect.server.publicCourse.dto.request.CreatePublicCourseRequestDto;
1819
import org.runnect.server.publicCourse.dto.request.DeletePublicCoursesRequestDto;
@@ -43,9 +44,6 @@
4344
import org.springframework.stereotype.Service;
4445
import org.springframework.transaction.annotation.Transactional;
4546

46-
import javax.persistence.EntityManager;
47-
import javax.persistence.PersistenceContext;
48-
4947
@Service
5048
@RequiredArgsConstructor
5149
public class PublicCourseService {
@@ -58,9 +56,6 @@ public class PublicCourseService {
5856
private final ScrapRepository scrapRepository;
5957
private final CourseRepository courseRepository;
6058

61-
@PersistenceContext
62-
private EntityManager entityManager;
63-
6459

6560
@Value("${runnect.marathon-public-course-id}")
6661
private void setMARATHON_PUBLIC_COURSE_IDS(String MARATHON_PUBLIC_COURSE_ID) {
@@ -371,16 +366,16 @@ public DeletePublicCoursesResponseDto deletePublicCourses(
371366
//삭제전 course의 isPrivate update
372367
publicCourses.forEach(publicCourse -> publicCourse.getCourse().retrieveCourse());
373368

374-
// Record의 publicCourse FK를 null로 설정 (Record 테이블 FK 제약조건 해제)
375-
entityManager.createQuery(
376-
"UPDATE Record r SET r.publicCourse = null WHERE r.publicCourse IN :publicCourses")
377-
.setParameter("publicCourses", publicCourses)
378-
.executeUpdate();
369+
// FK 제약 조건 해소: Record.public_course_id (NULLABLE) → null 처리
370+
publicCourses.forEach(publicCourse ->
371+
publicCourse.getRecords().forEach(Record::setPublicCourseNull)
372+
);
379373

380-
// Scrap 삭제 (Scrap 테이블 FK NOT NULL 제약조건)
374+
// FK 제약 조건 해소: Scrap.public_course_id (NOT NULL) → 행 삭제
381375
scrapRepository.deleteByPublicCourseIn(publicCourses);
382376

383-
publicCourseRepository.deleteAllInBatch(publicCourses);
377+
// deleteAll: Hibernate ActionQueue가 UPDATE → DELETE 순서 보장
378+
publicCourseRepository.deleteAll(publicCourses);
384379

385380
return DeletePublicCoursesResponseDto.from(publicCourses.size());
386381
}

0 commit comments

Comments
 (0)