문제점 : 회원탈퇴 기능을 진행 중 다음의 에러를 마주했다.
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<Member, Long> {
기존 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<Member, MemberID> {
'Web > SpringBoot' 카테고리의 다른 글
[Spring Boot] Timestamp로 회원가입 시간 저장 (MySQL) (0) | 2021.12.22 |
---|---|
[Spring Boot] MyBatis + MySQL 셋팅 (+동적 쿼리) (0) | 2021.12.21 |
[Spring Boot] 커스텀 Validator로 폼 입력값 검증하기 (0) | 2021.12.19 |
[Spring Boot] @Valid로 폼 입력값 검증하기 (0) | 2021.12.19 |
[Spring Boot] JPA 복합키 조인 및 식별자 클래스 - @ManyToOne, @IdClass (0) | 2021.12.18 |