[SPRING] 전체 페이지를 가져 오려면 PageRequest에서 계산 쿼리를 비활성화하는 방법?
SPRING전체 페이지를 가져 오려면 PageRequest에서 계산 쿼리를 비활성화하는 방법?
우리는 PageRequest와 함께 Spring 데이터를 사용하고 상당히 많은 데이터 집합을 사용합니다. 모든 쿼리는 전체 페이지 수를 얻기 위해 쿼리가 실행되는 것을 제외하고는 최적으로 수행됩니다. 이 기능을 비활성화 할 수있는 방법이 있습니까? 그렇지 않으면 가장 많이 사용하는 Pageable을 구현해야합니까?
http://static.springsource.org/spring-data/data-commons/docs/1.3.2.RELEASE/api/org/springframework/data/domain/PageRequest.html
http://static.springsource.org/spring-data/data-commons/docs/1.3.2.RELEASE/api/org/springframework/data/domain/Pageable.html
편집 : 추가 분석 후 나는이 문제를 해결할 수있는 유일한 방법은 Spring 데이터를 사용하지 않고 EntityManager를 사용하여 반환 할 시작 행 및 레코드 수를 설정할 수 있다고 믿습니다. 다음 페이지를 사용할 수 있을지 여부가 필요하기 때문에 추가 레코드 한 개만 검색합니다. 또한 Spring Data에서는 불가능한 동적 쿼리가 필요합니다.
편집 2 : 그리고 그것은 내가 잠시 동안 일부 응답을 기다리지 않았던 것처럼 보일 것입니다. 고마워요 !!!
해결법
-
==============================
1.이것을 달성하는 방법은 반환 값으로 List를 사용하는 것입니다. 예를 들어 다음과 같이 정의 된 저장소의 경우 :
이것을 달성하는 방법은 반환 값으로 List를 사용하는 것입니다. 예를 들어 다음과 같이 정의 된 저장소의 경우 :
interface CustomerRepository extends Repository<Customer, Long> { List<Customer> findByLastname(String lastname, Pageable pageable); }
쿼리 실행 엔진은 Pageable에 의해 전달 된 오프셋 및 페이지 크기를 적용하지만 Page 인스턴스를 생성 할 필요가 없으므로 추가 카운트 쿼리를 트리거하지 않습니다. 이는 또한 참조 문서의 관련 섹션에 문서화되어 있습니다.
from https://stackoverflow.com/questions/12644749/way-to-disable-count-query-from-pagerequest-for-getting-total-pages by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring-security-context.xml에서 사용자 이름 / 패스워드를 이동하는 방법? (0) | 2019.02.11 |
---|---|
[SPRING] Spring MVC에서 Gzip 압축 된 요청 바디를 디코딩하는 법 (0) | 2019.02.11 |
[SPRING] RunWith 및 ContextConfiguration 이상한 동작 (0) | 2019.02.11 |
[SPRING] Spring Security는 인증 된 사용자 및 인증되지 않은 사용자를 위해, 휴식 서비스에서 사용자 정보를 얻습니다. (0) | 2019.02.11 |
[SPRING] Spring MVC : Error 400 클라이언트가 보낸 요청의 구문이 올바르지 않습니다. (0) | 2019.02.11 |