2012-09-28 11 views
7

Bahar Verilerini PageRequest ile kullanıyor ve çok büyük miktarda veri kümesine ulaşıyoruz. Tüm sorgular, toplam sayfa sayısını elde etmek için çalıştırılan sorgu dışında en uygun şekilde gerçekleştirilir. Bu özelliği devre dışı bırakmanın bir yolu var mı yoksa büyük ihtimalle kendi Pageable'ımızı uygulamak zorunda mıyız?Toplam sayfa almak için PageRequest öğesinden gelen sayım sorgulamasını devre dışı bırakma yolu?

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

Düzenleme: Bu sorunu gidermek tek yolu başlangıç ​​satır ve kayıtların sayısının ayarını izin verdiği Bahar Verileri kullanma ve EntityManager kullanmayın olduğuna inanıyoruz fazla analiz sonrasında dönüş. Sadece bir sonraki sayfanın mevcut olup olmamasına ihtiyacımız var, bu yüzden sadece bir tane daha kayıt alalım. Ayrıca, Spring Data'da mümkün görünmeyen dinamik bir sorguya da ihtiyacımız var.

Düzenleme 2: Düzenleme, bazı yanıtlar için yeterince uzun beklemiyor gibiydi. Teşekkürler beyler!!!

cevap

17

Bunu gerçekleştirmenin yolu, List değerini dönüş değeri olarak kullanmaktır. Yani böyle tanımlanan bir depo için örneğin: Sorgu yürütme motoru ofset uygulamak ve Pageable tarafından gibi elle pageSize ama biz Page inşa etmek gerekmez gibi ek sayım sorgusu tetiklemek olmaz

interface CustomerRepository extends Repository<Customer, Long> { 

    List<Customer> findByLastname(Stirng lastname, Pageable pageable); 
} 

örneği. Bu ayrıca referans belgelerinin relevant sections belgesinde belgelenmiştir.

+0

Merhaba Oliver, findAll() yöntemini kullanarak aynı işlemi yapmak mümkün müdür? Liste findAll (Pageable pageable) gibi bir şey mi? (böylece şöyle bir şey üretmek mümkün olacaktır: SELECT * xxx LIMIT Yyy TABLE ORDER'DEN)? Nasıl yapılacağını anlayamadım (ve bu konudaki Ralph ile bir "alev savaşı" başlattı) :-) –

+0

Eğer hepsini tek bir sayfada toplamak istersem? Yani, sayfalandırmayı göz ardı ediyor. Yeni PageRequest (0, 0) gibi bir şey yapabilir miyim? – Stephane

+0

@StephaneEybert - her şeyi isterseniz, yöntem tanımınızdan Pageable parametresini bırakın. Tabii ki bu ve dev veri setlerine dikkat etmelisiniz. – JBCP

İlgili konular