지난번 포스팅에서 data.sql을 이용해 더미데이터를 만드는 방법을 알아보았습니다.
https://ittingz.tistory.com/168
더미데이터는 잘 생성이 되는데, 한 가지 간과한 문제가 있었습니다 🥹
더미데이터가 있는 상태에서 postman으로 새로운 데이터를 생성하려고 하면 id가 unique하지 않다는 오류가 발생한다는 것을 알게되었습니다. 데이터가 새로 생성되면 자동으로 id가 할당되도록 하는 Idnetity 타입의 strategy를 사용하고 있었습니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
이 전략은 id 값을 1부터 자동으로 할당하는데, DB에는 이미 더미 데이터로 id가 1인 row가 들어가 있다보니 오류가 발생했습니다.
그렇다면 id를 2부터 할당하도록 할 방법이 있는지 찾아보았고, 다행히 그렇게 할 수 있는 방법이 있었습니다.
PK 생성을 4부터 할 수 있게 한 예시를 보고 참고하여 작성해보았습니다.
@Id
@GeneratedValue(generator = "sequence-generator")
@GenericGenerator(name = "sequence-generator",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@org.hibernate.annotations.Parameter(name = "sequence_name", value = "member_sequence"),
@org.hibernate.annotations.Parameter(name = "initial_value", value = "2"),
@org.hibernate.annotations.Parameter(name = "increment_size", value = "1")
})
이렇게 해서 PK가 2부터 시작되게 하고, 1씩 증가하도록 설정하였습니다.
그랬더니 unique key가 아니라는 에러가 사라지고 db에도 더미데이터에 이어서 row가 잘 생성되는 것을 확인 할 수 있었습니다.
감사합니다!
🏷 제가 사용한 방법은 아래 사이트에서 참고하였습니다 :)
https://www.baeldung.com/hibernate-identifiers
반응형
'Java Spring' 카테고리의 다른 글
@Import 애노테이션의 쓰임 (0) | 2022.09.11 |
---|---|
MapStruct 사용 시 여러 Constructor가 있을 때의 문제점 (5) | 2022.07.31 |