작성
·
145
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이 발생하면안될것같은데 이 경우는 왜 발생할까요?
그리고 어떻게 해결해야할지도 궁금합니다.
답변기다리곘습니다 감사합니다.