QueryDSL을 활용해 게시글 전체 조회 및 검색 시 서버 에러(InvalidDefinitionException, IllegalStateException) 발생 - bondyuu/dodam GitHub Wiki
Trouble Shooting
Problem 1
InvalidDefinitionException 발생.
Cause of the Problem 1
FetchType은 DB에서 객체의 정보를 가져올 때 해당 객체에 매핑되어 있는 다른 객체의 정보를 어느 시점에서 가져올 지 정하는 옵션이다. 현재 프로젝트에서 모든 객체들의 FetchType이 Lazy로 설정되어 있다. 매핑되어 있는 객체의 정보를 serialize하기 전에 Proxy로 감싸져있는 hibernateLazyInitializer를 serialize하면서 문제가 발생했다. 무한 순환 참조 문제도 복합적으로 발생했다.
Solution of the Problem 1
아래 그림과 같이 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}), @JsonBackReference, @JsonManagedReference를 붙였다. @JsonBackReference는 양방향 관계에서 역방향(부모->자식) 참조되는 변수에 어노테이션으로 붙이며 직렬화에서 제외시킨다.@JsonManagedReference은 양방향 관계에서 정방향(자식->부모) 참조할 변수에 어노테이션으로 붙이며 직렬화에 포함시킨다.
Result of the Problem 1
InvalidDefinitionException은 해결되었지만, IllegalStateException이 발생했다.