Travel엔티티에 해당 코드가 있다.
@OneToMany(mappedBy = "travel", cascade = CascadeType.ALL)
private List<TravelImage> travelImages = new ArrayList<>();
@Builder를 사용해서 Travel를 인스턴스화 하려고 시도했다.
public Travel toTravelEntity() {
List<TravelImage> travelImages = toTravelImageEntity();
Travel travel = Travel.builder()
.title(title)
.content(content)
.price(price)
.local(local)
.country(country)
.lat(lat)
.lng(lng)
.maxPeople(maxPeople)
.build();
travel.addTravelImages(travelImages);
return travel;
}
builder할 때 travelImages필드에 값을 안 넣은 상태로 build했다.
나는 당연히 Travel클래스의 travelImages필드에 new ArrayList<>(); 했기에
값을 안 넣어도 초기화가 될 줄 알았다.
그래서 travel.addTravelImages(travelImages); <- 해당 코드를 통해 travelImages필드에
값을 넣을려했는데 NPE이 생겨버린거다.
어쨌든 builder를 통해 초기화를 할 경우 어떤 필드(String 혹은 Collection 등등)에 값을 안 넣을 경우 초기화가 안되고 null로 된다.
번외로 travelImages필드에 값만 안 넣은 상황만 동일하게 하고 일반 생성자를 통해 인스턴스화를 해봤는데 그땐 정상적으로 travelImages필드가 초기화 되었다.