Своеобразный сценарий сортировки сохраняемости Java - сначала отсортируйте по выбранному состоянию
Мы используем Java Persistence в качестве нашей структуры из нашего запроса к базе данных. В наших запросах мы используем CriteriaBuilder, CriteriaQuery, Predicate и Root. В последнее время появилось правило упорядочивать запрашиваемые записи транзакций по статусу, причем сначала некоторые статусы, а затем остальные в алфавитном порядке. Легко ли сделать это, используя стиль, который мы используем?
Например, все доступные статусы - СОЗДАН, ОБРАБОТАН, ОТНОСИТСЯ, ОТКАЗАНО, ЗАВЕРШЕН.
Таким образом, для этого случая все транзакции упорядочены с помощью createDate.... тогда все транзакции с одинаковыми созданными датами должны быть упорядочены по статусу с первым статусом COMPLETED, вторым - PENDING, а остальные статусы заказывать не нужно. Просто нужно сначала выполнить COMPLETED, а затем PENDING для всех транзакций с той же самой createDate.
Мы используем Java 8, Hibernate-JPA 2.1
Любой совет? Можно ли это сделать в запросе в стиле JPA с использованием CriteriaBuilder? Благодарю. Текущий код ниже:
List<UserTransaction> userTransactionList = new ArrayList<UserTransaction>();
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<UserTransaction> query = builder.createQuery(UserTransaction.class);
Root<UserTransaction> fromUserTransaction = query.from(UserTransaction.class);
List<Predicate> conditions = new ArrayList<>();
//...conditions are created here...
TypedQuery<UserTransaction> typedQuery = entityManager
.createQuery(query.select(fromUserTransaction).where(conditions.toArray(new Predicate[] {}))
.orderBy(builder.desc(fromUserTransaction.get("createdDate"))));
userTransactionList = typedQuery.getResultList();
Поле состояния называется статусом.