본문 바로가기

개발

[Spring] java.lang.IllegalArgumentException: id to load is required for loading 오류

Spring에서 아래와 같은 오류 메세지를 만났다.

 

org.springframework.dao.InvalidDataAccessApiUsageException: id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading

 

loading 하기 위해서는 id가 필요한데 찾을 수 없다.

 

라는 오류 메세지이다.

 

차근차근 오류를 찾아갔다.

 

나의 경우에는 아래 상황에서 문제가 발생했다.

Item book = new Book();
book.setName("시골 JPA");
book.setPrice(10000);
book.setStockQuantity(10);

int orderCount = 2;

// when
Long orderId = orderService.order(member.getId(), book.getId(), orderCount);

 

member.getId()의 경우에는 문제가 없었지만,

 

book을 영속화시키지 않아서 발생한 문제였다.

 

실제로 book.getId()를 출력해봤더니, null이 나왔다.

 

 

이 문제는 아래와 같이 book 엔티티를 영속화함으로써 해결하였다.

Item book = new Book();
book.setName("시골 JPA");
book.setPrice(10000);
book.setStockQuantity(10);
em.persist(book);