[英]I want to user orderBy by giving specific order of role
I've roles like lead > collaborator > participant > viewer.我有领导 > 合作者 > 参与者 > 查看者等角色。 If I use orderBy(role) then getting order as collaborator > lead > participant > viewer If I do DESC order then getting reverse.如果我使用 orderBy(role) 然后以协作者 > 领导 > 参与者 > 查看者的身份获得订单如果我使用 DESC 订单然后获得反向。
I tried specifying order in SQL and it's working as expected getting lead > collaborator > participant > viewer我尝试在 SQL 中指定顺序,它按预期工作得到领导 > 合作者 > 参与者 > 查看者
ORDER BY ROLE = 'viewer', ROLE = 'participant', ROLE = 'collaborator', ROLE = 'lead';
The same I want to achieve in Java Spring Boot.同样我想在 Java Spring Boot 中实现。 How can I?我怎么能够?
You have to create this method in your service:您必须在您的服务中创建此方法:
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;
If your roles are static (seldom if ever changes) then you can accomplish this by creating a enum
( Create Emun and Alter Type enum ) for them.如果您的角色是 static(很少更改),那么您可以通过为它们创建一个enum
( Create Emun和Alter Type enum )来完成此操作。 (see 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
) ;
I am not sure how to accomplish this in your obscurification manager (Spring Boot) so you will have to translate it or use raw sql.我不确定如何在您的模糊化管理器 (Spring Boot) 中完成此操作,因此您必须翻译它或使用原始 sql。
I've achieved this by specifying the order我通过指定顺序实现了这一点
.orderBy(field("role").sortAsc("lead", "collaborator", "participant", "viewer"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.