[SPRING] OFFSET 봄 데이터 Pageable를하고 LIMIT /
SPRINGOFFSET 봄 데이터 Pageable를하고 LIMIT /
나는 봄 데이터에 대한 우리의 전통 JPA / DAO 솔루션을 마이그레이션 할 찾고 있어요.
그러나, 우리의 프론트 엔드 중 하나는 SmartGWT이며, 점진적으로 / 제한을 사용하여 데이터 바인딩 구성 요소로드 데이터는 하드 Pageable의를 사용할 수 있도록 만 오프셋.
이 오프셋 (offset) 제한 / 페이지 번호로 evently 번역 될 수 있다는 것을 확실하지이기 때문에이 문제가 발생합니다. (이것은 사용자가 스크롤은 화면 크기를 조정하는 방법 등에 따라 달라질 수 있음).
나는 등 슬라이스 보았다하지만 / 어디 오프셋 값 한계를 사용하는 방법을 찾을 수 없습니다.
누군가가 어떤 포인터가 있는지 궁금 해서요? 최적의 I / 제한을 계속 사용 오프셋하지만, 구현을 코딩 할 필요없이 내 저장소 인터페이스에서 사용하고 난 지금 수동처럼 그들을 설정하려는 (등 query.setMaxResults)
편집 : 내가 문제가 이유를 명확히하기 위해 - 초기 및 후속 데이터 사이에 다를 수 있습니다 오프셋 한계가 / smartgwt 요소에서 가져옵니다. listgrid 들어, 첫 번째는 해당 화면에 표시 행의 양이기 때문에, 제한은 예를 들면 89로 설정되어 있습니다 페치 0.에게 다음 요청을 상쇄하지만, 89 오프셋 될 수도 있고, 그 요소의 "datapagesize 이후 50 한정 "50 값은, 그래서 내가 아래로 스크롤 할 때 그것이 가져올 수있는 내용. 내가 해제하기 전에 지금까지 아래로 스크롤 경우, 설정에 따라, 예를 행 159-209 대신에 대한 가져올 수 있습니다. 기본적으로, 오프셋 않는다는 보장은 아무것도의 배수가된다 없습니다. 그것은 17 오프셋 변환 페이지에 5를 제한하기 어렵다.
해결법
-
==============================
1.Pagebale 구현 한계를 사용하여 페이지 매김을 만들 오프셋 않습니다. 생성자의 페이지 값 AbstractPageRequest 클래스 getOffset 방법에서의 오프셋 값을 생성하는데 사용된다 :
Pagebale 구현 한계를 사용하여 페이지 매김을 만들 오프셋 않습니다. 생성자의 페이지 값 AbstractPageRequest 클래스 getOffset 방법에서의 오프셋 값을 생성하는데 사용된다 :
public int getOffset() { return this.page * this.size; }
만 제한을 사용하고 오프셋 및 믹스에서 페이지 매개 변수를 폐기하려는 경우, 웹 지원, 기본 구성을 재정의에 대해 특히 부분에 스프링 데이터 문서를보십시오. 당신은 제한을 받아 생성자 인수로 오프셋과 표준 PageRequest가 해결 대체하기 위해 자신의 HandlerMethodArgumentResolver을 구현 Pageable를 당신 자신의 구현을 만들 수 있습니다. 빠른 앤 더러운 예 :
Pageable를 구현 한
public class BetterPageRequest implements Pageable { public BetterPageRequest(int limit, int offset){ this.limit = limit; this.offset = offset; } // Other method implementations }
HandlerMethodArgumentResolver 구현
public class BetterPageableResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter){ return Pageable.class.equals(parameter.getParameterType()); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request, WebDataBinderFactory factory){ Map<String,String[]> params = request.getParameterMap(); return new BetterPageRequest(params.get('limit')[0], params.get('offset')[0]); } }
-
==============================
2.
public class OffsetLimitPageable extends PageRequest { private int offset; public OffsetLimitPageable(int offset, int limit){ super(offset,limit); this.offset=offset; } @Override public long getOffset(){ return this.offset; } }
그리고 예
Page<WashComment> washComments = washCommentRepository.findWashCommentByWashId_CarWashIdOrderByDateDesc(carWash, new OffsetLimitPageable(offsetNumberRepresentation, limitNumberRepresentation > Config.getMaxLimitAmount() ? Config.getMaxLimitAmount() : limitNumberRepresentation));
나에게 당신이 원하는 것을 알고하자
from https://stackoverflow.com/questions/30217552/spring-data-pageable-and-limit-offset by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 어떻게 잭슨 objectmapper에 dateformat 설정 봄에 MVC 설정을 추가하는 방법은 무엇입니까? (0) | 2019.10.04 |
---|---|
[SPRING] 내 스프링 JPA 통합 테스트를 위해 일을 @Rollback를 가져올 수 없습니다 (0) | 2019.10.04 |
[SPRING] 봄 부팅 thymeleaf로 이미지를로드 할 수 없습니다 (0) | 2019.10.04 |
[SPRING] 어떻게 spring.jpa.hibernate.ddl - 자동 속성을 정확히 봄에서 작동합니까? (0) | 2019.10.03 |
[SPRING] 봄 보안 로그 아웃 및 최대 세션 (0) | 2019.10.03 |