• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

EntityGraph 에서 복합키 조회시 질문드립니다.

21.10.16 13:15 작성 조회수 100

0

 

public class Product {
@Id
Long productId;

String name;
}

public class Member {
@Id
Long uid;

String name;
}

public class MemberInterest{
@Id
Long sequence;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "uid", insertable = false, updatable = false, referencedColumnName = "wine_id")
Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", insertable = false, updatable = false, referencedColumnName = "wine_id")
Product product;

int ratingPoint;
}

public class PurchaseHistory {
@Id
Long sequence;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "uid", insertable = false, updatable = false, referencedColumnName = "wine_id")
Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", insertable = false, updatable = false, referencedColumnName = "wine_id")
Product product;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "uid", referencedColumnName = "uid", insertable = false, updatable = false),
@JoinColumn(name = "wine_id", referencedColumnName = "wine_id", insertable = false, updatable = false)
})
MemberInterest memberInterest;
}

안녕하세요 강사님

강사님의 여러 강의를 잘 듣고있습니다.

질문이 두가지 있는데요 위와 같은 관계가 있다고 가정할 때

아래와같이 구매이력을 EntityGraph를 통해 가져오려고 합니다.

@Repository
public interface PurchaseHistoryRepository extends JpaRepository<PurchaseHistory, Long> {
@EntityGraph(attributePaths = {"member", "product", "memberInterest"})
Page<PurchaseHistory> findByUid(String uid, Pageable pageable);
}

하지만 실제로 동작시 MemberInterest 부분에서 N+1 문제가 발생하는데요

ToOne 관계이면, 패치조인이 되어 N+1이 발생하면안될것같은데 이 경우는 왜 발생할까요?

그리고 어떻게 해결해야할지도 궁금합니다.

답변기다리곘습니다 감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 그리즐리님

다음을 참고해주세요.

https://www.inflearn.com/questions/270577

감사합니다.