2015-05-27 16 views
8

Tôi đang sử dụng kho dữ liệu Spring mà không gặp bất kỳ sự cố nào. Khi tôi cố thêm Paging (sử dụng giao diện Pageable), nó hoạt động OK.Dữ liệu mùa xuân Hibernate + Có thể đếm được: Trả về kết quả trống

Tuy nhiên, khi tập kết quả trả về nhỏ hơn kích thước Trang, kết quả là Danh sách trống.

Sau đây là PageRequest của tôi. Các giá trị mặc định cho index và objectsPerPage tương ứng là 0 và 10.

new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders)) 

Khi sử dụng truy vấn trả về dưới 10 kết quả, danh sách kết quả trống.

Đây là cách tôi sử dụng kho trong lớp dịch vụ:

repository.findAll(MySpecification.searchClients(criteria), 
      myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null)) 
      .getContent(); 

EDIT 1 tôi tìm ra nguyên nhân của việc này, tuy nhiên tôi vẫn đang tìm kiếm một giải pháp hoặc một workaround.

 Long total = QueryUtils.executeCountQuery(getCountQuery(spec)); 
    List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList(); 

Mã này, nằm trong lớp SimpleJpaRepository làm select count... và nếu số lượng ít thì bù đắp, trả về một danh sách trống.

Trả lời

3

Theo PageRequest thực hiện:

public int getOffset() { 
    return page * size; 
} 

vì vậy nếu bạn thiết lập page-0 giá trị offset cũng phải 0 và không thể lớn hơn total (nếu total > 0).

Kiểm tra (có thể trong trình gỡ lỗi) giá trị pageIndex giá trị nào bạn chuyển đến dữ liệu mùa xuân. Nó có thể là giá trị khác - đôi khi nó là sai lầm đơn giản.

+4

Cảm ơn bạn. Vấn đề là các tham số truy vấn từ các dịch vụ REST của tôi là 'page = 1' và tôi đã quên rằng các trang là 0 dựa, nhưng API của tôi thì không. –

Các vấn đề liên quan