Java 如何使用oracle“rowid”使用条件生成器进行排序
下面举例说明我的oracle 10g查询,以获得311320之间的排序结果。但由于social_id列不是唯一的,我无法用于排序,正如oracle文档所述,因此我必须使用rowid和social_id组合作为排序参数Java 如何使用oracle“rowid”使用条件生成器进行排序,java,sql,spring-boot,jpa,criteria-api,Java,Sql,Spring Boot,Jpa,Criteria Api,下面举例说明我的oracle 10g查询,以获得311320之间的排序结果。但由于social_id列不是唯一的,我无法用于排序,正如oracle文档所述,因此我必须使用rowid和social_id组合作为排序参数 `select * from (select employee.*, rownum rnum from (select id,email,date,social_id from employee order by soci
`select * from
(select employee.*, rownum rnum
from
(select id,email,date,social_id
from employee
order by social_id, rowid) employee
where rownum <= 320
)
where rnum >= 311;`
我已经使用CriteriaAPI构建了这个查询,如下所示
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> criteriaQuery = criteriaBuilder.createQuery(Employee.class);
Root<Employee> root = criteriaQuery.from(Employee.class);
predicate = criteriaBuilder.like(root.get("social_id").as(String.class), searchTerms + "%");
criteriaQuery.where(predicate);
criteriaQuery.orderBy(criteriaBuilder.asc(root.get("social_id")));
Query query = entityManager.createQuery(criteriaQuery);
query.setFirstResult(331);
query.setMaxResults(10);
employee = query.getResultList();
所以我需要的是将rowid添加到排序参数中,以按社会id和rowid进行排序。有人能帮我完成这项任务吗。谢谢使用rowid有什么特别的原因吗?如果列没有唯一的数据,则返回结果集“相同的数据返回”中有错误。所以在oracal文档中,它说使用rowid作为此类指令的第二个参数。您可以显示一些示例数据,这实际上是为了获取更多信息,请阅读oracal 10g文档,您可以阅读以下文档