2012-05-10 33 views
63

Tôi đang cố gắng Spring data JPA trong dự án của mình. Tôi muốn biết nếu có API ngoài hộp để truy vấn dữ liệu, bởi cả hai số SortPageable. Tất nhiên, tôi biết tôi có thể tự mình viết ra phương pháp đó, tôi chỉ muốn biết nếu có một chiếc hộp ngoài kia. DAO của tôi kéo dài JpaRepository, và tôi thấy có những phương pháp sau đây tôi có thể gọi:Làm cách nào để truy vấn dữ liệu ra khỏi hộp bằng cách sử dụng JPA dữ liệu Spring theo cả Sắp xếp và Có thể đếm được?

findAll(); 
findAll(Pageable pageable); 
findAll(Sort sort); 

Nhưng không có phương pháp như findAll(Sort sort, Pageable pageable), vì vậy tôi tò mò.

Trả lời

134

Có hai cách để đạt được điều này:

final PageRequest page1 = new PageRequest(
    0, 20, Direction.ASC, "lastName", "salary" 
); 

final PageRequest page2 = new PageRequest(
    0, 20, new Sort(
    new Order(Direction.ASC, "lastName"), 
    new Order(Direction.DESC, "salary") 
) 
); 

dao.findAll(page1); 

Như bạn có thể thấy hình thức thứ hai là linh hoạt hơn vì nó cho phép để xác định hướng đi khác nhau cho mỗi tài sản (lastName ASC, salary DESC).

+3

Việc chuyển nhiều cột sắp xếp dữ liệu từ Javascript thông qua trình điều khiển REST có thể được thực hiện với dữ liệu Javascript sau: ['name, asc', 'location, desc'] – Stephane

+0

Cảm ơn câu trả lời của bạn và nó đã giúp tôi! Bạn có thể thay đổi thứ tự sắp xếp? Nó được sắp xếp trong dữ liệu Spring. – curious1

+3

Đây là giải pháp của tôi tuy nhiên vào mùa xuân đó là: Có thể đếm được pageable = new PageRequest (0, 20, new Sort (mới Sort.Order (Direction.ASC, "name"), new Sort.Order (Direction.DESC, "salary"))); – Simon

12

Có thể thu thập được tùy chọn để chỉ định sắp xếp. Từ số java doc

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

Tạo một PageRequest mới với các thông số sắp xếp được áp dụng.

+2

Bằng cách này, bạn sẽ đặt một hướng sắp xếp cho tất cả các thuộc tính. Nếu bạn muốn phân biệt hướng sắp xếp cho mỗi thuộc tính, bạn phải sử dụng đối tượng Sắp xếp như Tomasz đã chỉ ra. – Mariusz

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