Java 如何使用规范中的CriteriaQuery对列表进行排序?
我正试图整理我的JPA邮箱返回的列表。我使用的是Java 如何使用规范中的CriteriaQuery对列表进行排序?,java,spring-boot,criteria-api,Java,Spring Boot,Criteria Api,我正试图整理我的JPA邮箱返回的列表。我使用的是规范类,而不是@Query注释,根据,我应该使用标准查询对象 我的规格目前如下: public class MessageSpecification { public static Specification<MessageEntity> hasDemandeId(Long demandeId) { return (root, query, criteriaBuilder) -> {
规范
类,而不是@Query
注释,根据,我应该使用标准查询
对象
我的规格目前如下:
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);
};
}
}
但它不起作用,无论我使用criteriaBuilder.desc()
还是criteriaBuilder.asc()
,它都会以相同的顺序返回列表
我猜我做错了什么,我该如何使用CriteriaQuery
对象?试试这个:
return query.where(criteriaBuilder.equal(root.join(MessageEntity_.demande).get(DemandeEntity_.idTechnique), demandeId))
.orderBy(cb.asc(root.get(MessageEntity_.idTechnique)))
.distinct(true)
.getRestriction();
我在Specification类中找不到解决方案,因此我决定使用Sort类对列表进行排序:
公共排序排序技术(){
返回新的排序(Sort.Direction.ASC,“idtechnology”);
}
JpaRepository的findAll
接受排序对象作为参数和规范:
List messages=repository.findAll(MessageSpecification.hasDemandeId(idDemande),sortByIdTechnique());
不幸的是,它不起作用:(我再次尝试使用asc()
和desc()
,结果是@Artiow
return query.where(criteriaBuilder.equal(root.join(MessageEntity_.demande).get(DemandeEntity_.idTechnique), demandeId))
.orderBy(cb.asc(root.get(MessageEntity_.idTechnique)))
.distinct(true)
.getRestriction();