Построитель Crieria setMaxResults проблема сортировки - PullRequest
0 голосов
/ 25 февраля 2019

Я написал запрос в 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 будет таким же, как и раньше?Почему это случилось?Как я могу остановить это поведение?

1 Ответ

0 голосов
/ 25 февраля 2019

Почему вы используете Object для типа?Использовать Employee

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")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...