코드로 배우는 스프링부트 439p,
스프링 jpa data를 사용한 db에 데이터를 삽입하는 실습중
'not-null property references a null or transient value'
에러 발생
문제가 되는 코드는 다음과 같다
package org.zerock.b01.domain;
import lombok.*;
import javax.persistence.*;
@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Board extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long bno;
//컬럼의 길이는 500, null 허용여부
@Column(length = 500, nullable = false)
private String title;
@Column(length = 2000, nullable = false)
private String content;
@Column(length = 50, nullable = false)
private String writer;
}
@Test
public void testInsert(){
IntStream.rangeClosed(1, 100).forEach(i->{
Board board = Board.builder()
.title("title...." + 1)
.writer("user" + (i % 10))
.build();
Board result = boardRepository.save(board);
log.info("BNO: " + result.getBno());
});
}
not-null property references a null or transient value 에러의 경우
문제가 발생한다고 한다
마리아db에서 그마나 잘아는 mysql로 변경후 다시 테스트
코드를 확인해본 결과, 테스트 코드에서 문제가 발견되었다.
content 컬럼에 값을 넣는 코드를 빼먹었다....
@Test
public void testInsert(){
IntStream.rangeClosed(1, 100).forEach(i->{
Board board = Board.builder()
.title("title...." + 1)
.content("content..." + i)
.writer("user" + (i % 10))
.build();
Board result = boardRepository.save(board);
log.info("BNO: " + result.getBno());
});
}
잘 동작한다.
https://www.baeldung.com/hibernate-not-null-error
이거 읽어보다가 테스트 코드를 확인안해봤다는 것을 알고 다시 확인하니 문제를 찾을 수 있었다.
테스트 코드를 테스트하는 코드가 필요한 듯.