본문 바로가기
Java Spring

Spring Data JPA 더미데이터 생성 후 생각지 못했던 문제와 해결방법!

by GGShin 2022. 10. 1.

지난번 포스팅에서 data.sql을 이용해 더미데이터를 만드는 방법을 알아보았습니다.

 

https://ittingz.tistory.com/168

 

Spring Data JPA 더미 데이터 만들기-data.sql 사용

프론트에서 회원 더미 데이터를 요청하셔서 더미 데이터를 생성해보았습니다. 어떻게 하는 건가 궁금했었는데, 이 참에 방법을 공부했습니다. 1. 먼저 resource 폴더에 data.sql 파일을 만들어 줍니

ittingz.tistory.com

더미데이터는 잘 생성이 되는데, 한 가지 간과한 문제가 있었습니다 🥹

더미데이터가 있는 상태에서 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

 

An Overview of Identifiers in Hibernate/JPA | Baeldung

Learn how to map entity identifiers with Hibernate.

www.baeldung.com

 

반응형