java 我希望通过指定角色的特定顺序来使用orderBy

qfe3c7zg  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(73)

我的角色是领导者〉合作者〉参与者〉查看者。如果我使用orderBy(role),那么顺序是合作者〉领导者〉参与者〉查看者。如果我使用DESC,顺序则相反。
我尝试在SQL中指定顺序,结果与预期一致:销售线索〉协作者〉参与者〉查看者
第一个月
我想在Java Sping Boot 中实现同样的效果,怎么做呢?

0pizxfdo

0pizxfdo1#

如果你的角色是静态的(很少改变),那么你可以通过为他们创建一个enum(Create Emun and Alter Type enum)来完成。(参见demo

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
                  ) ;

我不知道如何在你的obscurification管理器(Sping Boot )中完成这一点,所以你必须翻译它或使用原始sql。

flvlnr44

flvlnr442#

您必须在服务中创建此方法:

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;
neskvpey

neskvpey3#

我通过指定顺序来实现这一点

.orderBy(field("role").sortAsc("lead", "collaborator", "participant", "viewer"))

相关问题