Порядок API критериев JPA по NULL последнимJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Порядок API критериев JPA по NULL последним

Сообщение Anonymous »

Я использую API критериев JPA для извлечения записей из базы данных.
У меня есть объект Record с полем dateTime, которое может иметь значение null. Я бы написал:

Код: Выделить всё

public List find(RecordFilter recordFilter, int page, int pageSize) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Record.class);
Root recordRoot = criteriaQuery.from(Record.class);

/*
* JOINS. Left Joins are used for optional fields, or fields inside of the optional fields.
*/
Join recordAgencyJoin = recordRoot.join(RecordTable.FIELD_AGENCY);
//Some other joins

//This is where I had the problem.
applyOrderBy(criteriaQuery, criteriaBuilder, recordRoot);

/*
* Specify which columns to select and their order.
* criteriaQuery.multiselect(....);
*/
applyMultiSelect(recordRoot, recordAgencyJoin, /*other joins*/ criteriaQuery);

/*
* criteriaQuery.where(somePredicate);
*/
applyFilter(recordFilter, criteriaQuery, criteriaBuilder,
recordRoot, recordAgencyJoin /*, other joins*/);
TypedQuery query = entityManager.createQuery(criteriaQuery);
RepositoryUtils.applyPagination(query, page, pageSize);
return query.getResultList();
}

private void applyOrderBy(CriteriaBuilder criteriaBuilder, Root recordRoot, CriteriaQuery criteriaQuery) {
//Other fields to be added to the final sort.

Order dateTimeDescOrder = criteriaBuilder.desc(recordRoot.get(RecordTable.FIELD_DATE_TIME));
criteriaQuery.orderBy(dateTimeDescOrder /*, other orders by*/);
}
Оказывается, записи с NULL dateTimeField отображаются первыми.
Я использую базу данных Postrgres.
Я отвечу на этот вопрос, потому что нашел решение .
Вот аналогичный пост.
JPA Criteria Query API и порядок по нулевому значению в конце

Подробнее здесь: https://stackoverflow.com/questions/415 ... -null-last
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»