Это запрос MySQL для получения результата в соответствии с вашим требованием, где порядок номеров строк не будет изменяться.
select * from (SELECT round(@row_number:=@row_number+1) AS row_number,csh.*
FROM table_name csh, (SELECT @row_number:=0) AS t ORDER BY id)t where
row_number between 1 and 10;
То же самое можно достичь в спящем режиме с помощью простого способа без написания таких подзапросов с помощьюЗапрос определенных методов.Этот код гибернации будет производить тот же набор результатов, что и выше SQL-запрос.
Root<table_name_entity> root = criteriaQuery.from(table_name_entity.class);
criteriaQuery.orderBy(builder.asc(root.get("ID")));
Query<table_name_entity> query = getSession().createQuery(criteriaQuery);
query.setFirstResult(0);
query.setMaxResults(9);
List<table_name_entity> list = query.list();