문제 1: QUser, QOrder, QReview 등 QueryDSL 메타 클래스가 없는 심볼로 표시

원인

빌드를 클린 후 빌드하지 않았기 때문에 이와같은 문제 발생

해결 과정

빌드하기전 클린 작업을 진행함

 

문제 2: ReviewRepository와 QueryDSL기반 ReviewQueryRepository간의 통합 

원인

JpaRepository와 QueryDSL 인터페이스(ReviewQueryRepository)를 동시에 구현하면서 일부 메서드가 중복되거나 불필요한 기본 메서드가 존재

해결과정

1.중복 메서드 제거

ReviewRepository에사 불필여한 기본 메서드(findByShopId)제거:

public interface ReviewRepository extends JpaRepository<Review, Integer>, ReviewQueryRepository {
    boolean existsByOrder(Order order);
}

2.QueryDSL 기반 메서드 구현

ReviewQueryRepositoryImpl에 findAllByShopId 및 findAllByUserId 구현:

@Override
public Page<Review> findAllByShopId(int shopId, Pageable pageable) {
    JPQLQuery<Review> query = queryFactory
        .selectFrom(review)
        .join(review.order, order).fetchJoin()
        .join(order.user, user).fetchJoin()
        .join(shop).on(user.id.eq(shop.user.id))
        .where(shop.id.eq(shopId));
    
    long total = query.fetchCount();
    List<Review> content = query
        .offset(pageable.getOffset())
        .limit(pageable.getPageSize())
        .fetch();
    
    return new PageImpl<>(content, pageable, total);
}

결과 ReviewRepository와 QueryDSL기반 메서드가 통합되어 서비스 계층에서 문제없이 호출 가능.

 

 

문제 3: reviewRepository에서 shopId 필드를 찾을 수 없음

원인:

Review 엔티티에 shopId필드가 없으며, Order를 통해 간접적으로 Shop과 연결되어 있었음.

해결 과정:

ReviewRepository에서 잘못된 메서드 삭제

결과

QueryDSL 기반으로 shopId를 통해 Review데이터를 정상적으로 조회 가능

 

 

문제 4: HEAD~n이 유효하지 않아 git rebase -i 실행 실패

원인:

HEAD~n에서 n을 올바르게 지정하지 않음

해결 과정:

HEAD~n의 숫자(n)를 정확히 지정(예: HEAD~5)

결과:

git rebase -i 명령어가 정상적으로 동작하며 커밋 메시지 및 히스토리 수정 가능.

 

 

문제 5: Review 엔티티에서 shopId로 데이터를 바로 조회 불가

원인:

Review는 Order를 통해 간접적으로 Shop과 연결되어 있으며, 이를 바로 접근하기 어려움.

해결 과정:

QueryDSL을 사용하여 shopId를 기준으로 리뷰 데이터를 조회.

Order를 통해 shop 데이터를 연결하는 쿼리 작성.

결과:

QueryDSL로 shopId를 기준으로 리뷰 데이터를 효율적으로 조회 가능.