with springframework query org many data column java jpa-2.0 limit jpql

java - springframework - Consulta de límite de JPQL



org springframework data jpa repository query limit (4)

En caso de que esté trabajando con spring-data debe utilizar la Interfaz Pageable . Un código de ejemplo a continuación,

Mi servicio,

import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @Service public class MyModelService { @Autowired private MyModelRepository myModelRepository; @Transactional public Page<MyModel> findMyModelTop5() { return myModelRepository.findMyModelTop5(new PageRequest(0, 5)); } }

Mi repositorio,

import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @Repository public interface MyModelRepository extends JpaRepository<MyModel, Integer> { @Query("SELECT mm FROM MyModel mm") public Page<MyModel> findMyModelTop5(Pageable pageable); }

Puede encontrar una respuesta más completa sobre las opciones de datos de primavera disponibles here .

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo limitar en una consulta de selección de consulta con nombre JPQL? ¡Necesito que el límite se realice en el nivel de consulta en sí y no en la capa java! Estoy tratando de usar

@NamedQueries(value = { @NamedQuery(name = UserNotification.QueryName.NOTIFICATION_DISPLAYED, query = "SELECT un FROM UserNotification un " + "WHERE un.orgId IN (:orgList) " + "AND un.user.id = :userId LIMIT 5")

¡¡¡pero en vano!!!

Por favor recomiende


Para las @NamedQueries específicas donde se requiere un límite, puede cambiar a @NamedNativeQuery

@NamedNativeQuery( name=UserNotification.QueryName.NOTIFICATION_DISPLAYED, query="SELECT un.* FROM user_notification un " + "WHERE un.user.id = ?1 LIMIT 5", resultClass=UserNotification.class )

No es tan suave, pero hace el trabajo.


mientras ejecuta la consulta con el administrador de entidades, simplemente escriba .setMaxResults (no de obj)


JPQL no proporciona un mecanismo para limitar las consultas. Esto se logra con más frecuencia utilizando el método setMaxResults() en la Query . Si debe evitar especificar esto en el código Java, puede hacer una vista en la base de datos que contiene su consulta y realiza el límite. Luego, asigne una entidad a esta vista como lo haría con una tabla.

Ejemplo:

List<String> resultList= query.setMaxResults(100).getResultList();