2013-03-14 1 views
1

Jax-RS 리소스를 생성 중입니다. 응답의 총 레코드 수를 반환하고 싶습니다. 나는 다음과 같이 변수를 특정 추가 "카운트"로 명명 된 쿼리 및 헤더 기능을 사용하고 있습니다 :JAX-RS 리소스에서 페이징 중 발견 된 총 행 수

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Response findAll(
     @QueryParam("offset") int offset, 
     @QueryParam("limit") int limit) { 

    EntityManager em = factory.createEntityManager(); 
    Query query; 
    try { 

     query = em.createNamedQuery("User.getCount"); 
     String count = ((Long) query.getSingleResult()).toString(); 

     query = em.createNamedQuery("User.findAll"); 

     List<T> list = query.setFirstResult(safeOffset(offset)) 
          .setMaxResults(safeLimit(limit)) 
          .getResultList(); 

     return Response.ok(new GenericEntity<List<User>>(list) {}) 
         .header("Count", count) 
         .build(); 

    } catch (Exception e) { 
     return Response.serverError().build(); 
    } finally { 
     em.close(); 
    } 
} 

기록의 총 개수 발견을 계산하고 반환하는 더 나은 방법이 있는지 궁금 해서요?

답변

관련 문제