본문으로 바로가기

1. one 관계 테이블 생성 - PK값을 Mysql auto_increment로 지정

2. many 관계 테이블 생성 - FK값(one 관계 테이블 PK)이 존재한다. 

3. 단방향 이므로 one 관계 Entity 생성 할때 아래와 같이 추가한다.

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name="pk")
private Collection<manyTableEntity> manyTableEntity;

4. many 관계 Entity 는 FK값을 넣지 않는다. PK 칼럼을 선언하지 않는다.

5. 값을 전부 넣고 Repository 작성후 Save() 를 호출 하면 many 관계 테이블 insert 시에 not null 에러 발생

java.sql.SQLException: Field 'fk' doesn't have a default value

6. jpa 의 구동 방식을 insert 후 update 이므로, DB 테이블 작성할때 FK를 not null 로 지정했는지 확인해보자. 

JPA 쿼리 순서
1. one Entity insert
2. many Entity insert (FK는 이때 들어가지 않는다.)
3. many Entity update (FK 업데이트)

7. 결론

테이블을 견고하게 만들겠다고 not null 체크 해놨다가 계속 FK 값이 안들어와서 삽질 하다가 해결.