Yapacağım statik sorgular için JPA'da Named Queries'in fikrini beğeniyorum, ancak genellikle sorgunun sonucunun yanı sıra sorgunun bazı alt kümelerinden sonuç listesi almak istiyorum. Neredeyse iki benzer NamedQueries yazmamayı tercih ederim.Sonuç kümesiyle JPA Adlandırılmış Sorgu için sayı boyutunu elde etmenin bir yolu var mı?
@NamedQuery(name = "getAccounts", query = "SELECT a FROM Account")
.
.
Query q = em.createNamedQuery("getAccounts");
List r = q.setFirstResult(s).setMaxResults(m).getResultList();
int count = q.getCount();
Yani d s 0 ve Hesabına 400 satır olduğunda, 10 olduğunu varsayalım: İdeal olarak, ne olmasını istiyorum gibi bir şeydir. R'nin 10 öğenin bir listesini olmasını beklerdim, ancak toplam 400 satır olduğunu bilmek isterim. İkinci bir @NamedQuery yazabilirsiniz:
@NamedQuery(name = "getAccountCount", query = "SELECT COUNT(a) FROM Account")
ama KURU ihlali ben her zaman sadece sayımı isteyeceğim eğer bunu gibi görünüyor. Bu basit durumda, ikisini senkronize tutmak kolaydır, ancak eğer sorgu değiştiyse, değerleri hizalamak için her iki @NamedQueries'i güncellemek zorunda olduğumdan daha az ideal görünmektedir.
Buradaki yaygın bir kullanım durumu, öğelerin bazı alt kümelerini getiriyor, ancak toplam sayımı belirtmenin bir yoluna ihtiyaç duyuyordu ("1-10/400 gösteriliyor"). setFirstResult
/setMaxResults
bir sonuç kümesinde bir alt kümesini döndürmez do kullanma
sonunda namedQueries için de çalışıyor! Teşekkürler – Zavael
İlginç, ek açıklamaları yapılandırırken statik finallere başvurabileceğinizi bile bilmiyordum. Ancak, iki ayrı adlandırılmış sorgu gerektirmeyen bir çözüm hala ideal olacaktır. – aroth