QueryDsl ~is not a root path

김종완·2022년 12월 29일
0

QueryDsl을 사용하면서 ~is not a root path 에러를 만나게 되었다.

아래 부분에서 해당 오류를 만났다.

account 와 xcuinfo에 있는 xcubator(타입 account) 을 조인하는 부분에서 해당 에러를 만나게 되었다.

단순하게 xcuinfo에서 조인하는 부분이 있기 때문에 위와같이 조인할 수 있다고 판단했다.

해당 오류를 보면서 느낀점은 조인할 때 루트 경로를 사용해야되니 account에 xcuinfo 조인하는 부분을 추가해서 xcuinfo가 루트 경로가 되도록 해야겠다 느꼈다.

생각대로 수정해보니 오류가 해결 되었다.

그 다음은 아래 오류를 만나게 되었다!

query specified join fetching, but the owner of the fetched association was not present in the select list

인터넷에 검색해보니 fetchJoin을 사용하여 문제가 발생하였다.

fetch join 같은 경우 엔티티 상태에서 엔티티 그래프를 참조하기 위해서 사용하는 것인데 dto 상태로 조회하는 것은 불가능 하기 때문에 발생한 에러였다. 단순하게 순수한 join을 사용하니 에러가 해결되었다.

에러를 봤을 때 원인을 알기 어려웠지만 해결책을 알고나니 에러에 적혀있는 문장 fetched association was not present 부분에 fetched association이 순수 entity를 의미하는 것 같다.

https://www.inflearn.com/questions/23847/queryprojection과-fetch-join

해당 에러에 대해서 해결할 수 있는 방법은 위 링크에서 찾게 되었다.

김영한님 querydsl 강의를 구매하였지만 시간 문제로 보지 못하였는데 원리를 이해하는 부분에 필요성을 느껴서 빨리 강의를 봐야겠다.

profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글