【问题标题】:Complex sorting in Spring Data JPA Sort objectSpring Data JPA Sort对象中的复杂排序
【发布时间】:2021-05-27 09:57:20
【问题描述】:

我想做这个查询

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

我有这个 JpaRepository,我想通过这种复杂的排序传递一个 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 对象?

【问题讨论】:

  • 你能分享一下错误吗?

标签: spring-boot kotlin spring-data-jpa spring-data spring-repositories


【解决方案1】:

您可以使用规范 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2022-08-10
    • 2018-04-18
    相关资源
    最近更新 更多