diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/entity/AttendanceRecord.java b/src/main/java/org/cotato/csquiz/domain/attendance/entity/AttendanceRecord.java index 45050d39..e63400d2 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/entity/AttendanceRecord.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/entity/AttendanceRecord.java @@ -49,9 +49,8 @@ public class AttendanceRecord extends BaseTimeEntity { @Column(name = "member_id", nullable = false) private Long memberId; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "attendance_id") - private Attendance attendance; + @Column(name = "attendance_id", nullable = false) + private Long attendanceId; @Column(name = "attend_time", nullable = false) private LocalDateTime attendTime; @@ -62,7 +61,7 @@ private AttendanceRecord(AttendanceType attendanceType, AttendanceResult attenda this.attendanceResult = attendanceResult; this.locationAccuracy = locationAccuracy; this.memberId = memberId; - this.attendance = attendance; + this.attendanceId = attendance.getId(); this.attendTime = attendTime; } diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/repository/AttendanceRecordRepository.java b/src/main/java/org/cotato/csquiz/domain/attendance/repository/AttendanceRecordRepository.java index dec5b31f..62b6920b 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/repository/AttendanceRecordRepository.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/repository/AttendanceRecordRepository.java @@ -2,7 +2,6 @@ import java.util.List; import java.util.Optional; -import org.cotato.csquiz.domain.attendance.entity.Attendance; import org.cotato.csquiz.domain.attendance.entity.AttendanceRecord; import org.cotato.csquiz.domain.attendance.enums.AttendanceType; import org.springframework.data.jpa.repository.JpaRepository; @@ -10,14 +9,14 @@ import org.springframework.data.repository.query.Param; public interface AttendanceRecordRepository extends JpaRepository { - @Query("select a from AttendanceRecord a where a.attendance in :attendances") - List findAllByAttendanceIdsInQuery(@Param("attendances") List attendances); + @Query("select a from AttendanceRecord a where a.attendanceId in :attendanceIds") + List findAllByAttendanceIdsInQuery(@Param("attendanceIds") List attendanceIds); boolean existsByAttendanceIdAndMemberIdAndAttendanceType(Long attendanceId, Long memberId, AttendanceType attendanceType); Optional findByMemberIdAndAttendanceId(Long memberId, Long attendanceId); - @Query("select a from AttendanceRecord a where a.attendance.id in :attendanceIds and a.memberId = :memberId") + @Query("select a from AttendanceRecord a where a.attendanceId in :attendanceIds and a.memberId = :memberId") List findAllByAttendanceIdsInQueryAndMemberId(@Param("attendanceIds") List attendanceIds, @Param("memberId") Long memberId); List findAllByAttendanceId(Long attendanceId); diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceRecordService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceRecordService.java index 4eb1e12c..5b1c86ed 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceRecordService.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceRecordService.java @@ -45,8 +45,11 @@ public class AttendanceRecordService { private final SessionRepository sessionRepository; public List generateAttendanceResponses(List attendances) { - List records = attendanceRecordRepository.findAllByAttendanceIdsInQuery( - attendances); + List attendanceIds = attendances.stream() + .map(Attendance::getId) + .toList(); + + List records = attendanceRecordRepository.findAllByAttendanceIdsInQuery(attendanceIds); Map> recordsByMemberId = records.stream() .collect(Collectors.groupingBy(AttendanceRecord::getMemberId));