Search

TodoServiceTest 오류

유형
JPA
TEST
에러
Date
2023/03/30
링크
비고
재현님이 해결해주셨습니다
TodoServiceTest - testCreateFull()
재현님이 만들어주신 테스트 코드에 값을 넣고, 내가 만든 화면단과 연결해서 데이터가 잘 뽑히나 확인해 보려했다. 주석을 토대로 먼저 테스트 코드를 이용해 유저를 추가해주고, 아래와 같이 fetch 도 넣어주었다.
Planner.java
하지만 다음과 같은 에러문구가 발생했다.
org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: multi.second.project.domain.todolist.domain.TodoList; nested exception is java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: multi.second.project.domain.todolist.domain.TodoList
Plain Text
복사
잘 해결되지 않아 재현님에게 도움을 요청하였고, 해결해주셨다!
달라진 소스코드는 아래와 같다.
위의 코드를 아래와 같이 바꾸면 된다.
하고나니 데이터가 잘 들어가있는걸 확인할 수 있었다.
TodoServiceTest - testAddTodolist()
재현님이 해결해주고 다음 테스트를 돌렸는데 다음과 같은 예외가 발생하였다,,
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: multi.second.project.domain.planner.domain.Planner.todolists, could not initialize proxy - no Session
Plain Text
복사
무슨말인지 모르겠어서 디버깅을 해보았당
그래도 모르겠어서 구글링을 해보았다.
@OneToMany 이거나 @ManyToMany 일때 종종 발생한다고 한다. 트랜잭션 밖에서 엔티티를 조회할때 생기는 문제라 해서, 해당 테스트코드 위에 @Transactional 을 붙여주었다.
그랬더니 다행히 해결되었고, 값도 잘 들어왔다!