Я пытаюсь упорядочить списки, возвращаемые моим JpaRepository. Я использую Specification
классы, а не @Query
аннотацию, и согласно этому вопросу я должен использовать CriteriaQuery
объект.
Моя спецификация в настоящее время выглядит следующим образом:
public class MessageSpecification {
public static Specification<MessageEntity> hasDemandeId(Long demandeId) {
return (root, query, criteriaBuilder) -> {
// TODO : order the list
return criteriaBuilder.equal(root.join(MessageEntity_.demande).get(DemandeEntity_.idTechnique), demandeId);
};
}
}
Как видите, у меня есть два класса сущностей MessageEntity
и DemandeEntity
, где MessageEntity
имеет свойство, ссылающееся на DemandeEntity
. Итак, в этой спецификации я получаю список MessageEntity
с указанным идентификатором DemandeEntity
.
Теперь я хотел бы сделать эквивалент ORDER BY Message.ID
. Для этого я попытался использовать объект CriteriaQuery
в моем предикате (переменная query
):
return (root, query, criteriaBuilder) -> {
query.orderBy(criteriaBuilder.asc(root.get(MessageEntity_.idTechnique)));
return criteriaBuilder.equal(root.join(MessageEntity_.demande).get(DemandeEntity_.idTechnique), demandeId);
};
Но это не работает, он все равно возвращает список в том же порядке, использую ли я criteriaBuilder.desc()
или criteriaBuilder.asc()
.
Я предполагаю, что я делаю что-то не так, как я должен использовать этот CriteriaQuery
объект?