Как использовать и номер строки и порядок в Hibernate подзапрос? - PullRequest
0 голосов
/ 21 января 2019

выберите e из (выберите e из table_name e в порядке e.refid desc) в качестве table_name e где (rownum) между: satrt и: end

я получаю ошибку как " org.hibernate.hql.internal.ast.QuerySyntaxException: неожиданный токен: (возле строки 1, столбец 15 «

Запрос гибернации: FROM table_name, где rownum между: start и: end order by refid desc

отлично работает. но порядок номеров строк меняется.

любезно предложите, как написать запрос гибернации.

1 Ответ

0 голосов
/ 21 января 2019

Это запрос 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();
...