on
[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