[Spring Boot] JPA 복합키에 따른 repository

[Spring Boot] JPA 복합키에 따른 repository

반응형

문제점 : 회원탈퇴 기능을 진행 중 다음의 에러를 마주했다.

org.springframework.dao.InvalidDataAccessApiUsageException:

Provided id of the wrong type for class com.min.board.model.Member. Expected: class com.min.board.model.MemberID, got class java.lang.Long; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class com.min.board.model.Member. Expected: class com.min.board.model.MemberID, got class java.lang.Long

findById()를 실행하면 나왔던 에러 내용인데, 에러 내용은 id가 MemberID인데 계속 Long 값을 넣어줘서 그렇다고 한다.

public interface JpaMemberRepository extends JpaRepository {

기존 JPA를 구현한 리포지토리의 내용인데, 기본적으로 상속할 때

JpaRepository<엔티티 클래스, 엔티티 클래스의 기본키>

로 상속받아야한다.

그런데 프로젝트에서 식별자 클래스로 MemberID를 만들어놨었다.

@Data @AllArgsConstructor @NoArgsConstructor public class MemberID implements Serializable { @Column(name = "id") private Long id; @Column(name = "username") private String username; }

해결 : 리포지토리의 [엔티티 클래스의 기본키] 부분을 Long에서 MemberID로 고치고 해결됐다.

public interface JpaMemberRepository extends JpaRepository {

from http://black-mint.tistory.com/27 by ccl(A) rewrite - 2021-12-20 22:02:02