나는 정적 쿼리를 위해 JPA에서 Named Queries라는 아이디어를 좋아하지만, 종종 쿼리의 카운트 결과와 일부 쿼리의 결과 목록을 얻고 싶다. 차라리 두 개의 거의 동일한 NamedQuery를 작성하지 않을 것입니다.결과 세트가있는 JPA Named Query의 카운트 크기를 가져 오는 방법이 있습니까?
@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();
은 그럼 m이들 0 및 계정 400 개 행이, 10 가정 해 봅시다 : 이상적으로, 내가 가지고 싶은 것은 같은입니다. 나는 그 안에 10 개의 아이템 목록을 가지고 있다고 생각 하겠지만, 총 400 개의 행이 있다는 것을 알고 싶습니다. 나는 두 번째 @NamedQuery 작성할 수
@NamedQuery(name = "getAccountCount", query = "SELECT COUNT(a) FROM Account")
을하지만 DRY 위반이 항상 단지 수를 원하는거야 경우 그렇게 할 것으로 보인다. 이 간단한 경우에는 두 항목을 동기화 상태로 유지하는 것이 쉽지만 쿼리가 변경되면 값을 줄이기 위해 @NamedQueries를 모두 업데이트해야한다는 것이 이상적이지 않습니다.
일반적인 사용 사례는 항목의 일부 하위 집합을 가져 오는 것이지만 총 개수 ("1-10/400 표시 중")를 나타내는 방법이 필요합니다. setFirstResult
/setMaxResults
가 이 결과 집합의 부분 집합을 반환하지 않는 사용
마지막으로 namedQueries에 대한 작업 해결 방법도 있습니다! 감사합니다. – Zavael
흥미롭게도, 주석을 구성 할 때 정적 결승을 참조 할 수 있다는 것을 알지 못했습니다. 그러나 두 개의 별도의 명명 된 쿼리가 필요하지 않은 솔루션이 여전히 이상적이라고 생각합니다. – aroth