Notice
Recent Posts
Recent Comments
Link
HwangHub
[이슈] Field 'id' doesn't have a default value 본문
문제 상황
분명 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를 한번 엎고 다시 생성하니 문제없이 동작하는 걸 확인했다. (근데 이런 이슈가 운영중에 발생했다 상상하면 끔찍하다…)
'workspace > 아티클' 카테고리의 다른 글
dto 역직렬화에는 기본생성자 + 자바 리플렉션 사용 (0) | 2023.10.13 |
---|---|
[이슈] 게시글별 댓글 전체 조회시 대댓글 개수만큼 부모 댓글만 중복 조회됨 (0) | 2023.10.13 |
[JPA] @Column(length = value), @Size, @Length 간단요약 (0) | 2023.10.13 |
[리팩토링] post 엔티티 body 필드 TEXT 적용 (0) | 2023.10.13 |
[리팩토링] dto를 더욱 적극적으로 사용 (1) | 2023.10.13 |
Comments