@GeneratedValue는 @Id와 함께 쓰는 어노테이션이며 auto_increment와 같은 자동 생성 전략을 결정합니다.
JPA에서 복합키를 구현하기 위한 IdClass와 EmbeddedId를 복습하던 도중 @GeneratedValue도 함께 사용해보았습니다.
IdClass 사용
우선 Primary Key를 위한 UserId 클래스를 생성합니다.
그리고 User Entity를 생성합니다.
클래스선언 위에 @IdClass를 사용해줍니다.
이제 DB가 만들어지는지 실행을 해볼까요?
음~ 잘 만들어졌네요!
이제 User table에 데이터를 넣어봅시다.
데이터를 넣기 위해 Test를 작성하였습니다.
User 테이블은 auto_increment이므로 id는 1이됩니다.
하지만 에러가 떠버립니다.
EmbeddedId 사용
다음은 Embeddable 입니다.
우선 Primary Key를 위한 UserId 클래스를 생성합니다.
그리고 User Entity입니다.
PK 위에 @EmbeddedId를 사용합니다.
이번에는 auto_increment조차 생기지 않습니다.
다른 방법들도 시도해보았으나 모두 실패했습니다 ㅠ
결론
사실 제가 코드를 잘못 짠줄 알고 구글링을 여러번 시도했습니다.
https://infondgndg91.blogspot.com/2019/11/hibernate-composite-identifiers.html
그러던 중 이 블로그를 발견하였고, 이분도 어떤 커뮤니티에서 물어보셨던 것인지
@GeneratedValue를 @IdClass, @EmbeddedId와 함께 사용하는 것이 불가능하다는 답변을 받은것 같습니다.
앞으로 주의해서 사용해야 할 것 같습니다.
'Spring' 카테고리의 다른 글
Pagenation이후 sort 문제 (0) | 2021.08.14 |
---|---|
JpaRepository save를 반복하여 데이터를 추가할 때 update가 되는 문제 (0) | 2021.08.06 |
Entity @Embeddable을 이용한 복합 키 구현 (0) | 2021.08.01 |
Entity @IdClass를 이용한 복합 키 구현 (0) | 2021.07.29 |
Spring @RequestParam String[] 문제 (0) | 2021.07.24 |