返回在 JAX-RS 资源中分页时找到的总行数

问题描述 投票:0回答:1

我正在创建 Jax-RS 资源。我想返回响应中的记录总数。我正在使用命名查询和标头函数来添加特定的“Count”变量,如下所示:

@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();
    }
}

我想知道是否有更好的方法来计算并返回找到的记录总数?

count pagination jax-rs response
1个回答
1
投票
© www.soinside.com 2019 - 2024. All rights reserved.