Своеобразный сценарий сортировки сохраняемости 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();

Поле состояния называется статусом.

0 ответов

Другие вопросы по тегам