관리 메뉴

너와 나의 스토리

Field 'XX_id' doesn't have a default value: JoinColumn id 생성 문제 해결 본문

개발/Spring Boot

Field 'XX_id' doesn't have a default value: JoinColumn id 생성 문제 해결

노는게제일좋아! 2022. 7. 19. 02:31
반응형

 

@Entity
@Table(name = "user")
public class UserEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "user_id")
    private Set<Job> jobs;

    //...
}


@Entity
@Table(name = "job")
public class JobEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "company")
    private String company;

	//..
}

<DB>

user
id
name
...
job
id
user_id
company
...

 

  • 이런 식으로 구현하려고 했더니 "Field 'user_id' doesn't have a default value"라는 에러 메시지가 나왔다. 
  • 원인:
    • user 정보를 가져올 때 user_id를 이용해 job 리스트를 가져온다.
    • 즉, job은 user_id 필수적으로 가져야 하는 것.
    • 근데 해당 컬럼이 nullable하게 설정되어 있어서 에러가 발생한 것이였다.
  • 해결 방법:
    • (null=false) 옵션을 설정해 주면 된다.
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "user_id", nullable = false)
private Set<Job> jobs;

 

 

추가

  • Field 'id' doesn't have a default value 에러가 발생하였다면 db에서 id 값에 auto increment 설정을 해줬는지 확인해 보자.

 

 

 

 

반응형
Comments