Veritabanından alınan sonuçların sayısını sınırlamak nasıl mümkün olabilir?JPQL'de sonuçların sayısını sınırla
select e from Entity e /* I need only 10 results for instance */
Veritabanından alınan sonuçların sayısını sınırlamak nasıl mümkün olabilir?JPQL'de sonuçların sayısını sınırla
select e from Entity e /* I need only 10 results for instance */
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.
Sen bir ofset de kullanarak setFirstResult()
em.createNamedQuery("Entity.list")
.setFirstResult(startPosition)
.setMaxResults(length);
"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. –
@AdamDyga Evet, uygulamaya özgü, bazıları açık bir şekilde sağlar. Bilgi eklediğiniz için teşekkürler. –