如何按字段排序 Jpa 存储库中的列表名称

How to Order By field List names in Jpa repository

我需要按 status 名称顺序订购我选择的商品。 (活跃 <- 不活跃)。

我正确地写了它的 SQL 查询如下。我需要将它转换成 jpa 存储库。请帮助我。

select * from device
 where status in ('active', 'inactive')
order 
    by field(status,'active', 'inactive')

您将必须使用大小写表达式,即 case status when 'active' then 0 when 'inactive' then 1 else null end。使用 JPA Criteria,这看起来大致像这样:

CriteriaBuilder.SimpleCase<String> caseExprssion = cb.selectCase(root.get("status"));
caseExprssion.when(cb.literal("active"), cb.literal(0));
caseExprssion.when(cb.literal("inactive"), cb.literal(1));
caseExprssion.otherwise(cb.nullLiteral(Integer.class));
criteriaQuery.orderBy(caseExpression);