본문 바로가기
관리자

Programming-[Backend]/Spring

[에러] SQLServerException : Cannot insert the value NULL into column ... column does not allow nulls. INSERT fails

728x90
반응형

현상

빌더 패턴 방식을 이용하여 Entity를 만들고, XxxRepository.save(XxxEntity)로 DB에 Entity 값을 저장하려는데, 아래와 같이 Cannot insert... 에러가 발생했다.

 

에러 화면

 

 

빌더 패턴으로 Entity 만들기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
XxxEntity xxxEntity = XxxEntity.builder()
       .Column1(Column1에 들어갈 값)
       .Column2(Column2에 들어갈 값)
       .Column3(Column3에 들어갈 값)
       .Column4(Column4에 들어갈 값)
       .Column5(Column5에 들어갈 값)
     
      //원인 : 요 사이 값들은 필수값 인데도 안넣어줌

       .Column10(Column10에 들어갈 값)
       .Column11(Column11에 들어갈 값)
       .Column12(Column12에 들어갈 값)
       .Column13(Column13에 들어갈 값)
       .Column14(Column14에 들어갈 값)
       .Column15(Column15에 들어갈 값)
       .Column16(Column16에 들어갈 값)
        .build();
cs

 

Save하기

1
XxxRepository.save(XxxEntity);
cs

 

 


원인

Entity를 정의하는 테이블에서, 필수값으로 지정된 값들을 Entity 생성시에 넣어주지 않았기 때문에 발생하였다.

(예를들어 현상 부분에서 Column6~Column9가 필수값임에도 빌더패턴에서 값을 넣어주지 않음)

 


해결

필수값으로 지정된 컬럼값들은 반드시 넣어주도록 한다.

 

 


intelliJ에서 table부분을 보면, 아이콘에 동그라미 표시가 되어있는 부분이 있는데, 해당 값들은 필수값이므로 Entity 작성 시에 반드시 넣어주어야 save가 가능하다.

 

728x90
반응형