Cómo paginar una consulta JPA

Tapan Chandra:

Tengo una tabla con columnas presentación gusta ID, Name, Codeentre otras propiedades. Mi requisito es buscar registros basados ​​en las propiedades mencionadas y devolver un conjunto paginado.

Este es el pseudocódigo de lo que estoy buscando:

searchSubmission(searchFilter sf,pageIndex,noOfRecords) {
   query = 'from submisssion where code=sf.code or id=sf.id order by id start_from (pageIndex*noOfRecords) limit noOfRecords'
   return result();
}

Parece que hay muchas opciones como CriteriaBuilder, NamedQuery, etc., que es el más eficiente en esta situación?

Chris:

Para todos los objetos de consulta JPA (excepto las consultas SQL nativas), usaría la paginación a través de los métodos setMaxResults (int) y setFirstResult (int). Por ejemplo:

  return em.createNamedQuery("yourqueryname", YourEntity.class)
      .setMaxResults(noOfRecords)
      .setFirstResult(pageIndex * noOfRecords)
      .getResultList();

JPA realizará la paginación por usted.

Las consultas con nombre están predefinidas y se pueden almacenar en caché, mientras que otros tipos se crean dinámicamente.
Entonces, la elección es usar JPQL como:

Query query = em.createQuery("SELECT s FROM Submission s WHERE s.code = :code or s.id = :id ORDER BY s.id", Submission.class);

O API de CriteriaBuilder para formar una consulta similar:

    CriteriaBuilder qb = em.getCriteriaBuilder();
    CriteriaQuery<Submission> cq = qb.createQuery(Submission.class);

    Root<Submission> root = cq.from(Submission.class);
    cq.where( qb.or( 
        qb.equal(root.get("code"), qb.parameter(String.class, "code")),
        qb.equal(root.get("id"), qb.parameter(Integer.class, "id"))
    ));
    Query query = em.createQuery(cq);

No olvide establecer los valores de los parámetros mediante query.setParameter ("id", sf.id), por ejemplo.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Firestore Paginar una consulta

Cómo crear una consulta JPA con LEFT OUTER JOIN

¿Cómo usar ':' en una consulta nativa de JPA?

Cómo construir una consulta de inserción en JPA

Cómo pasar parámetros en una consulta JPA nativa

¿Cómo paginar en una aplicación Catalyst usando elasticsearch?

¿Cómo paginar una lista de objetos en Java 8?

¿Cómo paginar sobre una respuesta de la AWS CLI?

Foundation 6 paginación, ¿cómo paginar una tabla?

¿Cómo paginar en una aplicación Catalyst usando elasticsearch?

¿Cómo paginar una matriz con agrupaciones anidadas?

¿Cómo paginar una tabla en Zend Framework?

Cómo crear una consulta usando la especificación JPA en una columna no primaria

¿Cómo realizar una consulta en Spring Data / JPA con una clave externa?

Cómo actualizar una columna JSONB en PostgreSQL utilizando una consulta Spring Data JPA

¿Cómo crear una consulta similar a una 'instancia de' en JPA 2.0?

Cómo definir una consulta de repositorio JPA con una combinación

¿Cómo asignar una consulta de unión a una clase que no es de entidad en JPA?

Cómo paginar la consulta de base de fuego que contiene la API de equalTo ()

¿Cómo escribir una consulta JPA donde el parámetro es un conjunto?

Cómo especificar el parámetro nombrado en una consulta nativa jpa externalizada

¿Cómo recuperar solo 100 resultados de una consulta Spring JPA?

Spring Data JPA: cómo convertir el resultado de la consulta en una clase de entidad

Cómo devolver un objeto personalizado de una consulta Spring Data JPA GROUP BY

¿Cómo combinar la paginación con una consulta de criterios en Spring Data JPA?

Cómo escribir una consulta usando solo ciertas partes de un objeto con Spring JPA

¿Cómo hacer una consulta dinámica de Spring (Boot) JPA con paginación?

Hibernate (JPA) cómo hacer una consulta ansiosa, cargando todos los objetos secundarios

¿Cómo obtener CURDATE () / NOW () en una consulta con nombre JPA?