SPRING

[Spring Boot + JPA] 트러블 슈팅

도원좀비 2025. 3. 28. 13:26

🚨 트러블슈팅 - 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 JPAComment.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