페이징 질문
1288
작성한 질문수 10
안녕하세요 선생님!
강의를 듣다가 궁금한게 생겨 몇 가지 질문드립니다.
1. @Query를 이용해서 jpql 페치조인을 한 경우, 페이징을 하려할때 다음과 같은 에러가 뜹니다.
@Query("select m from Member m join fetch m.team")
Page<Member> findFetchJoinTeam(Pageable pageable);
@Test
void member(){
Team teamA = teamRepository.save(new Team("teamA"));
memberRepository.save(new Member("member1", 40, teamA));
memberRepository.save(new Member("member2", 40, teamA));
memberRepository.save(new Member("member3", 40, teamA));
PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC,
"username"));
Page<Member> fetchJoinTeam = memberRepository.findFetchJoinTeam(pageRequest);
}
Failed to load ApplicationContext
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository' defined in com.example.forq.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Count query validation failed for method public abstract org.springframework.data.domain.Page com.example.forq.MemberRepository.findFetchJoinTeam(org.springframework.data.domain.Pageable)!
paging에서 count 부분이 문제인것 같은데 entitygraph로 하면 잘 돼서 제가 뭔가를 놓친건지 궁금합니다
public interface MemberRepository extends JpaRepository<Member, Long> {
@Override
@EntityGraph(attributePaths = {"team"})
Page<Member> findAll(Pageable pageable);
}
2. where 등으로 필터링을 하지 않을떄는 countQuery를 분리해서 최적화를 하면된다고 하셨는데
만약
select m from Member m join m.team t where t.name=:name ”같이 조인 대상에 필터링을 하는 경우에는 어떻게 최적화를 할 수 있는지 궁금합니다.
감사합니다!
답변 2
3
안녕하세요. 현집님
스프링 데이터 JPA에서 fetch join이 들어간 경우 Count 쿼리를 정상적으로 만들어내지 못합니다.
@EntityGraph를 사용하는 경우에는 Count 쿼리를 정상적으로 만들어낼 수 있습니다.
따라서 이 경우 countQuery 부분을 별도로 분리해주시면 됩니다.
조인 대상을 필터링하는 경우에도 countQuery를 똑같이 사용해주시면 됩니다.
관련해서 다음 링크를 참고해주세요^^
https://stackoverflow.com/questions/21549480/spring-data-fetch-join-with-paging-is-not-working
감사합니다.
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
64
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
100
3
MemberRepository 구현체
0
55
1
pdf 표현 질문드립니다.
0
59
1
로그가 남지 않는 문제.
0
78
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
67
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
68
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
87
2
Sort 인터페이스는 잘 사용 안하나요?
0
50
1
스캔대상 질문드립니다.
0
45
1
하이버네이트6에서의 최적화에 이은 질문
0
81
1
save() vs saveAndFlush DB 통신 횟수
0
50
1
순수 JPA 리포지토리 코드 수정부분
0
85
2
bulk연산 후 flush하는 이유를 모르겠어요
0
147
3
bulk insert 질문입니다.
0
174
2
교만했던 것 같아요.
0
142
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
143
2
동적 테이블에 대한 질문
0
84
1
영속성 전이와 연관관계
0
128
2
강의 10:25 질문
0
71
1
단건 update 질문
0
94
2
엔티티 와 도메인의 경계
0
124
1
UsernameOnlyDto 타입 type mismatch 오류
0
114
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
131
1





