Podoba mi się pomysł nazwanych zapytań w WZP dla zapytań statycznych, które zamierzam zrobić, ale często chcę uzyskać wynik liczenia dla zapytania, a także listę wyników z pewnego podzbioru zapytania. Wolałbym nie pisać dwóch prawie identycznych nazwanych NamedQueries. Idealnie, co chciałbym mieć to coś w rodzaju:Czy istnieje sposób na uzyskanie rozmiaru licznika dla kwerendy nazwanej JPA z zestawem wyników?
@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();
Więc powiedzmy m wynosi 10, s ma wartość 0 i istnieją 400 wierszy w Rachunku. Oczekuję, że r będzie mieć listę 10 elementów, ale chciałbym wiedzieć, że jest ich łącznie 400 wierszy. Mógłbym napisać drugą @NamedQuery:
@NamedQuery(name = "getAccountCount", query = "SELECT COUNT(a) FROM Account")
ale wydaje suchym naruszenie to zrobić jeśli mam zawsze tylko będzie chciał liczyć. W tym prostym przypadku łatwo jest zsynchronizować te dwie, ale jeśli zapytanie się zmieni, wydaje się mniej niż idealne, że muszę zaktualizować oba @NamedQueries, aby zachować wartości w linii.
Powszechnie stosowanym przykładem byłoby pobranie części podzbioru produktów, ale wymagające pewnego sposobu wskazania całkowitej liczby ("Wyświetlanie 1-10 z 400").
wreszcie działa również dla namedQueries! dziękuję – Zavael
Interesujące, nie wiedziałem nawet, że podczas konfigurowania adnotacji można odwoływać się do statystyk statycznych. Jednak rozwiązanie, które nie wymagałoby dwóch oddzielnych nazwanych zapytań, nadal byłoby idealne, jak sądzę. – aroth