🚨 트러블슈팅 - Spring Data JPA: findByXId() 메서드 오류
❓ 문제 상황
CommentRepository에서 특정 일정(schedule)의 댓글 목록을 가져오기 위해 다음 메서드를 선언
List<Comment> findByScheduleId(Long scheduleId);
실행 시 다음과 같은 예외가 발생
No property 'id' found for type 'Schedule'; Traversed path: Comment.schedule
🕵️♂️ 원인 분석
Spring Data JPA는 메서드 이름을 해석할 때 findByScheduleId(...) → Comment.schedule.id 로 인식
하지만 Schedule 엔티티에서는 id가 아니라 다음처럼 직접 지정한 필드명이 존재
@Id
@GeneratedValue(...)
private Long scheduleId; // ❗ 필드명은 id가 아님
💡 해결 방법
메서드 명을 실제 필드명(scheduleId)에 맞게 다음과 같이 수정
List<Comment> findBySchedule_ScheduleId(Long scheduleId);
Spring Data JPA는 Comment.schedule.scheduleId 경로를 따라가며 자동으로 쿼리를 생성
🤔 배운점
- Spring Data JPA는 필드명 기반으로 동작하므로, 연관관계 경로에서 정확한 명시가 필요하다.
- 특히 엔티티에서 id 필드 이름을 커스텀한 경우 메서드 이름 자동 생성 기능은 주의해야 한다.
- 경로가 헷갈릴 때는 "객체 참조 → 필드명" 순으로 생각하자 (ex: schedule.scheduleId → Schedule_ScheduleId)
'SPRING' 카테고리의 다른 글
| [Spring Boot + JPA] LV.2 (1) | 2025.03.28 |
|---|---|
| SPRING[Spring Boot + JPA] LV.1 (1) | 2025.03.28 |
| Spring JPA 영속성 컨텍스트 (0) | 2025.03.26 |
| Spring JPA (0) | 2025.03.26 |
| Bean Validation (1) | 2025.03.25 |