繁体   English   中英

我想通过给出特定的角色顺序来使用 orderBy

[英]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(很少更改),那么您可以通过为它们创建一个enumCreate EmunAlter 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM