Para obtener un registro en una tabla SQL con un name , estoy usando la siguiente consulta:
SELECT * FROM User WHERE User.name = name;Y el nombre del método Spring JPA correspondiente es el siguiente:
UserEntity findUserByName(@Param("name") String name);Mi pregunta es la siguiente:
¿Cómo puedo solicitar un registro aleatorio de una tabla SQL?
Sé que mi consulta SQL debería ser la siguiente:
SELECT * FROM User ORDER BY RAND() LIMIT 1;Pero, ¿cuál debería ser el nombre del método Spring JPA correspondiente para eso?
UserEntity findUserXXXXXXX (XXXXXXX);JPA admite funciones que se definen en la especificación. Puede usar la opción de native query o la JPA 2.1 function para llamar a las funciones de la base de datos que no son compatibles directamente con la especificación JPA. Puede usar la anotación @Query en su repositorio jpa de datos de primavera.
Consulta nativa
@Query(value="SELECT * FROM User ORDER BY RAND() LIMIT 1", nativeQuery = true) UserEntity findUser();Función
@Query("SELECT u FROM UserEntity u order by function('RAND')") List<UserEntity> findUser();Puede usar list.get(0) para obtener el usuario único.
si desea una lista aleatoria, puede hacerlo fácilmente utilizando PagingAndSortingRepository y proporcionar un número de página aleatorio donde (page_number <page_count)
p.ej
long page_count = (totalRecords / perPage) //Use PageRequest for PagingAndSortingRepository Pageable object PageRequest.of(new Random().nextLong(page_count), perPage)o puede proporcionar el número de página aleatorio desde el lado front_end