Crieria Builder setMaxResults排序问题

问题描述 投票:0回答:1

我在Criteria Builder中编写了一个查询,它看起来像这样。

private EntityManager entitymanager;
CriteriaBuilder criteriaBuilder = entitymanager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = 
criteriaBuilder.createQuery(Object.class);
Root<Employee> from = criteriaQuery.from(Employee.class);
criteriaQuery.orderBy(criteriaBuilder.asc(name));
TypedQuery<Object> typedQuery1 = entitymanager.createQuery(criteriaQuery );
List<Object> resultlist1 = typedQuery1.getResultList();
typedQuery1.setMaxResults(pageable.getPageSize());

在setMaxResults应用于查询后,resultlist1的顺序与以前不同?为什么会这样?我怎么能阻止这种行为?

java criteria
1个回答
1
投票

为什么使用Object作为类型?使用员工

CriteriaQuery<Employee> criteriaQuery = 
criteriaBuilder.createQuery(Employee.class);
Root<Employee> from = criteriaQuery.from(Employee.class);
criteriaQuery.orderBy(criteriaBuilder.asc(from.get("column_name")));
TypedQuery<Employee> typedQuery1 = entitymanager.createQuery(criteriaQuery);
typedQuery1.setMaxResults(pageable.getPageSize());
List<Employee> resultlist1 = typedQuery1.getResultList();

执行查询后调用setMaxResults()没有意义。在调用getResultList()之前设置最大结果

typedQuery1.setMaxResults(pageable.getPageSize());
List<Employee> resultlist1 = typedQuery1.getResultList();

什么是name变量?按此顺序排序:

criteriaQuery.orderBy(criteriaBuilder.asc(from.get("column_name")));
© www.soinside.com 2019 - 2024. All rights reserved.