Spring Data JPA Sort对象中的复杂排序



我想做这个查询

select * from order_config
where group_id like '%PATH%'
order by (group_id = 'PATH') desc

我有这个jparerepository,我想传递一个Pageable对象用这个复杂的排序

val sort = Sort.by(Sort.Direction.DESC, "group_id")
val pageable = PageRequest.of(pageNumber, pageSize, sort)
this.findAll(pageable)

我已经试过了,但是行不通

val sort = JpaSort.unsafe(Sort.Direction.DESC, "(group_id = 'PATH')")
val pageable = PageRequest.of(pageNumber, pageSize, sort)
this.findAll(pageable)

我如何用这个表达式而不是模型属性来构建这个Sort对象?

您可以使用规范API生成更复杂的查询。在我的代码中,我使用这个代码来创建规范对象。

// Instead of Post class pass your own entity class.
public static Specification<Post> search(String keyword) { 
return ((root, criteriaQuery, criteriaBuilder) -> {
if (keyword == null) {
return null;
}
return criteriaBuilder.like(root.get("title"), "%" + keyword + "%")); 
});
}

findAll()接受规范对象,您可以传递规范和可分页对象,如:

this.findAll(search("PATH"), pageable);

最新更新