fix(osiv): lazy 관계 선로딩을 보완한다

This commit is contained in:
2026-06-20 00:05:48 +09:00
parent 92fe6caf17
commit 37ad325cc2
7 changed files with 532 additions and 14 deletions

View File

@@ -196,8 +196,12 @@ class AdminOriginalWorkService(
/** 원작 상세 조회 (소프트 삭제 제외) */
@Transactional(readOnly = true)
fun getOriginalWork(id: Long): OriginalWork {
return originalWorkRepository.findByIdAndIsDeletedFalse(id)
val originalWork = originalWorkRepository.findByIdAndIsDeletedFalse(id)
.orElseThrow { SodaException(messageKey = "admin.chat.original.not_found") }
initializeResponseRelations(originalWork)
return originalWork
}
/** 원작 페이징 조회 */
@@ -210,7 +214,9 @@ class AdminOriginalWorkService(
else -> size
}
val pageable = PageRequest.of(safePage, safeSize, Sort.by("createdAt").descending())
return originalWorkRepository.findByIsDeletedFalse(pageable)
val originalWorks = originalWorkRepository.findByIsDeletedFalse(pageable)
originalWorks.content.forEach { initializeResponseRelations(it) }
return originalWorks
}
/** 지정 원작에 속한 활성 캐릭터 페이징 조회 (최신순) */
@@ -233,7 +239,14 @@ class AdminOriginalWorkService(
/** 원작 검색 (제목/콘텐츠타입/카테고리, 소프트 삭제 제외) - 무페이징 */
@Transactional(readOnly = true)
fun searchOriginalWorksAll(searchTerm: String): List<OriginalWork> {
return originalWorkRepository.searchNoPaging(searchTerm)
val originalWorks = originalWorkRepository.searchNoPaging(searchTerm)
originalWorks.forEach { initializeResponseRelations(it) }
return originalWorks
}
private fun initializeResponseRelations(originalWork: OriginalWork) {
originalWork.originalLinks.forEach { it.url }
originalWork.tagMappings.forEach { it.tag.tag }
}
/** 원작에 기존 캐릭터들을 배정 */