2010-08-13 17 views

cevap

59

Açıkça getirilecek 10 sonuç vererek bunu deneyebilirsiniz. arka uç destekliyorsa

entityManager.createQuery(JPQL_QUERY) 
      .setParameter(arg0, arg1) 
      .setMaxResults(10) 
      .getResultList(); 

otomatik sonuçların belirli sayıda almak için arka uç yerli sorgu yaratacak ve aksi takdirde tüm sonuçları aldıktan sonra hafızada sınırı yok.

+4

"Otomatik olarak sonuçların belirli sayıda almak için arka uç yerli sorgu yaratacak" ayarlayabilirsiniz - veritabanı ve lehçesi bunu destekliyorsa kullanılabilir. Aksi takdirde, JPA tüm sonuçları sorgulayacak ve bunları bellekte filtreleyecektir. Geliştiricinin bunun farkında olmalı, çünkü performansı çok fazla etkileyebilir. Dahası, bazı (daha karmaşık) sorgularla JPA, LIMIT/TOP işlevini bile kullanmayacaktır, örneğin yanlış sonuçlara yol açacaktır. –

+1

@AdamDyga Evet, uygulamaya özgü, bazıları açık bir şekilde sağlar. Bilgi eklediğiniz için teşekkürler. –

19

Sen bir ofset de kullanarak setFirstResult()

em.createNamedQuery("Entity.list") 
     .setFirstResult(startPosition) 
     .setMaxResults(length); 
İlgili konular