Spring 数据 JPA 中的 ORDER BY CASE 列

ORDER BY CASE column in Spring Data JPA

我想在 ORDER BY 子句中使用 CASE 表达式。 Spring Data JPA?

这可能吗

Spring Data JPA提供了org.springframework.data.domain.Sort.Sort来处理排序,但它不包含任何处理ORDER BY CASE的函数。

我想实现等效于以下 JPA 语句,但使用 Spring Data JPA:

ORDER BY CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END desc

有可能 见 org/springframework/data/domain/Sort.class

并插入您的代码

yourRepository.findByAnyting(
  new Sort(new Sort.Order(Sort.Direction.DESC, "property"))
);

您可以使用 JpaSort.unsafe() 按任意 JPA ORDER-BY 表达式排序:

String orderBy = "CASE WHEN TblList.PinRequestCount <> 0 THEN TblList.PinRequestCount END";
Sort sort = JpaSort.unsafe(Sort.Direction.DESC, orderBy);