22.05.26 02:51 작성
·
834
1
영한님 서포터즈님들 안녕하세요
강의에서는 엔티티 끼리의 DTO 변환은 조인을 통해 쉽게 할 수 있는데, querydsl의 프로젝션을 사용해서 DTO를 변환하는 중에 값 타입 컬렉션은 어떻게 할 수 있는지 궁금해서 여쭤보게 됐습니다.
현재 재 코드입니다
Club.class
PetSizeType(Enum)
EligibleBreed
이제 querydsl을 이용해서 DTO를 변환시키면 not an entity 라는 에러가 발생합니다
일단 값 타입 컬렉션은 entity가 아니기 때문에 해당 에러 로그는 이해가 됩니다
그렇다면 값 타입 컬렉션은 조인도 할 수 없기 때문에 10개의 Club을 가져오려면 select 쿼리가 20개가 나가게 되는데, 이를 최적화하는 방법이 없을까요?
아래의 사진은 하나의 club을 조회할 때 나가는 쿼리입니다!
그리고 제 개인적인 생각으로는 실무에서도 Enum타입을 자주 사용할 것 같은데,, 같은 Enum Type을 저장하기 위해서 따로 엔티티를 만드는 편인가요??(값 타입 컬렉션을 사용하지 않는지 궁금합니다)
감사합니다
답변 3
1
2022. 06. 06. 19:00
안녕하세요. gusdn85554님
질문1, 질문2를 확인해보았습니다.
간단하게 답변을 드리자면, ElementCollection도 1:N 관계라 생각하시면 됩니다.
따라서 활용2편에 설명드린 내용으로 최적화해야 합니다.
활용2편을 복습해보시면 답을 찾으실 수 있을거에요.
그리고 DTO로 조회할 때는 1:N 관계의 데이터를 그대로 넣을 수 없습니다. 이 경우 조인한 다음에 필드의 값 하나하나를 직접 매핑해서 넣어주어야 합니다. 지금처럼 1:N 관계 자체를 넣으시면 안됩니다.
감사합니다.
0
2022. 05. 29. 22:44
안녕하세요 영한님 주말에 답변 감사드립니다
https://drive.google.com/file/d/13TVNk7HjfIfRNDqcPK3RnZ2IyTowL0ey/view?usp=sharing
해당 링크에서 pdf 파일에 설명이 들어있습니다
감사합니다
0
2022. 05. 29. 18:14
안녕하세요. gusdn85554님
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.