当前位置: 代码迷 >> java >> Crieria Builder setMaxResults排序问题
  详细解决方案

Crieria Builder setMaxResults排序问题

热度:57   发布时间:2023-07-18 09:05:28.0

我在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应用于查询后,结果列表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")));
  相关解决方案