HwangHub

[이슈] Field 'id' doesn't have a default value 본문

PROJECT-LOG/likelion.university

[이슈] Field 'id' doesn't have a default value

HwangJerry 2023. 10. 13. 15:24

문제 상황

분명 PK 자동생성 전략을 사용하였는데, 위와 같은 에러가 발생하였다.

 

엔티티를 정의한 방식은 아래와 같다.

@Entity
public class Post extends BaseTimeEntity {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "post_id")
    private Long id;
    
    ...
}
 

해결

스택오버플로우에 따르면, "경우에 따라 모델이나 ORM은 데이터베이스의 변경사항이 정확하게 반영되지 않을 수 있다.(SchemeUpdate) 코드 상의 오류를 정확히 파악할 수 없다면 다시 만들어보세요.(SchemeExport)" 라고 한다.

 

 

아무래도 ddl update 방식으로는 generate strategy 변경이 반영되지 않는 것 같다. 기존에 pk 생성 방식에 문제가 있었던 것 같고, 현재 아직 개발 DB이므로 create로 테이블을 엎어도 되지만, 아직 공동 개발 환경이라 멋대로 하기 애매해서 h2로 테스트해본 결과 잘 됨을 확인할 수 있었다.

 

 

우선은 H2 기준 IDENTITY로도 문제 없었고, 다른 엔티티들이 Mysql에서 IDENTITY로 문제없이 동작하는걸 보면 아마 코드상 문제는 없었던 것 같고, ORM 이슈였던 것 같다.

 

 

따라서 MySQL DB를 한번 엎고 다시 생성하니 문제없이 동작하는 걸 확인했다. (근데 이런 이슈가 운영중에 발생했다 상상하면 끔찍하다…)

 

참고: https://cocoon1787.tistory.com/823

Comments