[英]I want to user orderBy by giving specific order of role
我有领导 > 合作者 > 参与者 > 查看者等角色。 如果我使用 orderBy(role) 然后以协作者 > 领导 > 参与者 > 查看者的身份获得订单如果我使用 DESC 订单然后获得反向。
我尝试在 SQL 中指定顺序,它按预期工作得到领导 > 合作者 > 参与者 > 查看者
ORDER BY ROLE = 'viewer', ROLE = 'participant', ROLE = 'collaborator', ROLE = 'lead';
同样我想在 Java Spring Boot 中实现。 我怎么能够?
您必须在您的服务中创建此方法:
public List<ConcoursAdministratifRe> getListByRole() {
String queryRecherche = "SELECT t FROM YourEntityName t ORDER BY (CASE role WHEN 'viewer' THEN 1 WHEN 'participant' THEN 2 WHEN 'lead' THEN 3 WHEN 'collaborator' THEN 4 ELSE 5 END) ASC";
TypedQuery<YourEntityName > query = em.createQuery(queryRecherche, YourEntityName.class);
List<YourEntityName> myList = query.getResultList();
return myList;
如果您的角色是 static(很少更改),那么您可以通过为它们创建一个enum
( Create Emun和Alter Type enum )来完成此操作。 (见演示)
create type role_enum as enum ('collaborator', 'lead', 'participant', 'viewer');
create table test ( id integer generated always as identity
primary key
, name text
, role role_enum
) ;
我不确定如何在您的模糊化管理器 (Spring Boot) 中完成此操作,因此您必须翻译它或使用原始 sql。
我通过指定顺序实现了这一点
.orderBy(field("role").sortAsc("lead", "collaborator", "participant", "viewer"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.