최대 절전 모드에서 페이징을 구현하려면 어떻게해야합니까? Query
개체에는 setMaxResults
및 setFirstResult
이라는 확실한 방법이 있습니다. 그러나 결과의 전체 페이지 수는 어디에서 확인할 수 있습니까? 결과의 마지막 페이지에 대한 링크를 표시하고 xxx의 200-250과 같은 결과를 인쇄 할 수 있습니까?최대 절전 모드에서 결과 페이징 구현 (총 행 수 얻기)
답변
Query.setMaxResults (int results) 및 Query.setFirstResult (int offset)를 사용할 수 있습니다.
편집 : 얼마나 많은 결과를 얻을지 알 수 없습니다. 먼저 "select count (*) ..."를 사용하여 쿼리해야합니다. 좀 못생긴, IMHO.
두 개의 쿼리 - 너무 많은 테이블을 함께 조인하지 않는 경우 비용이 적게 드는 계산 (*) 유형 쿼리와 제한이 설정된 두 번째 쿼리를 수행 할 수 있습니다. 그러면 아이템이 몇 개 있는지 알지만 볼 수있는 아이템 만 가져옵니다.
개인적으로 프론트 엔드에서 페이징을 처리해야한다고 생각합니다. 나는 이것이 효과가 없다는 것을 알고 있지만 적어도 오류가 발생하기 쉽습니다.
count (*)를 사용하면 특정 페이지에 대한 요청 사이에 테이블에서 레코드가 삭제되면 어떻게됩니까? 많은 일이 이런 식으로 잘못 될 수 있습니다.
최대 결과를 얻으려면 별도의 쿼리를 수행해야하며, 다른 요청이 발행 될 때 클라이언트가 시간 B에 페이징 요청을 처음 발행 한 시간 A에서 새 레코드가 추가 된 경우 또는 일부 레코드가 이제 기준에 맞으면 최대를 다시 쿼리하여이를 반영해야합니다. 나는 보통 당신은 최대 행 수 단지는 setMaxResults 반환하려는 수있는이
ScrollableResults scrollable = criteria.scroll(ScrollMode.SCROLL_INSENSITIVE);
if(scrollable.last()){//returns true if there is a resultset
genericDTO.setTotalCount(scrollable.getRowNumber() + 1);
criteria.setFirstResult(command.getStart())
.setMaxResults(command.getLimit());
genericDTO.setLineItems(Collections.unmodifiableList(criteria.list()));
}
scrollable.close();
return genericDTO;
같은 DTO에 내 데이터를 밀어 Criteria
쿼리에 대해 나는 보통이
Integer count = (Integer) session.createQuery("select count(*) from ....").uniqueResult();
같은 HQL에서이 작업을 수행. 이 값을 사용 가능한 실제 행 수보다 크게 설정해도 아무런 해가 없습니다. 다른 솔루션의 문제점은 레코드의 순서가 쿼리의 반복마다 동일하고 명령간에 변경이 없다고 가정하는 것입니다.
실제로 결과를 스크롤하려면 ScrollableResults를 사용하는 것이 가장 좋습니다. 이 오브젝트를 페이징 사이에 버리지 말고 레코드를 동일한 순서로 유지하는 데 사용하십시오. ScrollableResults에서 레코드 수를 찾으려면 last() 위치로 이동 한 다음 행 번호를 가져옵니다. 행 번호는 0부터 계산되기 때문에이 값에 1을 더해야합니다.
- 1. 최대 절전 모드에서 OutOfMemory
- 2. 최대 절전 모드에서 지연로드
- 3. 최대 절전 모드에서 유니온을 사용할 수 있습니까?
- 4. 최대 절전 모드에서 GeneratedValue를 무시
- 5. 최대 절전 모드 검색 페이징 + FullTextSearch + 기준
- 6. 최대 절전 모드에서 데이터베이스베이스 암호화
- 7. 최대 절전 모드에서 ID를 피하십시오
- 8. 최대 절전 모드에서 역방향 검색
- 9. Facebook Graph API : 총 게시물 수 얻기
- 10. 최대 절전 모드에서 매핑하는 방법
- 11. 최대 절전 모드에서 실행했을 때
- 12. 최대 절전 모드에서 열린 쿼리
- 13. 최대 절전 모드에서 DDL 실행
- 14. 최대 절전 모드에서 계산 된 값으로 결과 정렬
- 15. 클라이언트 측 정렬 + 최대 절전 모드 페이징?
- 16. 최대 절전 모드에서 모델의 테이블 이름을 얻으십시오
- 17. NSOutlineView에서 행 수 얻기
- 18. JPA의 최대 절전 모드 구현
- 19. 최대 절전 모드 결과 순서
- 20. 최대 절전 모드 DAO 구현
- 21. 최대 절전 모드 : 페이지 결과 및 결과 크기 알기
- 22. 최대 절전 모드에서 oracle 동의어를 매핑하는 방법
- 23. 최대 절전 모드에서 속성 값 생성
- 24. 최대 절전 모드에서 정규 표현식 쿼리
- 25. 최대 절전 모드에서 복합 외래 키 매핑
- 26. 최대 절전 모드에서 관계 수순으로 정렬
- 27. 최대 절전 모드에서 중복 연결 경로 오류
- 28. 최대 절전 모드에서 지연로드 사용 안 함
- 29. 최대 절전 모드에서 사용자 유형 조인
- 30. 네이티브 최대 절전 모드에서 FetchMode 설정
두 답변에 동의합니다. 또한이 게시물의 구현 사례를 묻습니다. http://stackoverflow.com/questions/1600440/java-coding-best-practices-for-reusing-part-of-a-query-to-count – KLE