如何在休眠子查询中同时使用行号和顺序?

时间:2019-01-21 08:54:15

标签: hibernate hibernate-query

从(在table_name中按e.refid desc从e中选择e)中的selecte作为table_name e,其中(rownum)在:satrt和:end之间

我得到错误为 ” org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:(靠近第1行第15列 “

休眠查询:FROM table_name,其中行号在开始和结束之间由refid desc

工作正常。但行号顺序却有所不同。

请建议如何编写休眠查询。

1 个答案:

答案 0 :(得分:1)

这是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;

无需使用Query定义的方法编写此类子查询,即可轻松实现休眠状态。该休眠代码将产生与上述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();