当我使用QueryDSL时,我在排序和弹出可分页方面遇到了一些问题 . 我需要非常高级的排序,而不仅仅是存储在同一个表中的数据库中的对象的字段 .

这是我的模型大约:

@Getter
@Setter
@Entity
public class Book {

  @Id
  @GeneratedValue
  private long id;

  @OneToMany
  private Set<Category> cats = new HashSet<>()

  } 

 @Getter
 @Setter
 @Entity
  public class Category{
    private long id;
    private Name name;
  }

 public enum Name{
  WINTER,
  SUN,
  SUMMER
 }

现在,我想要做的就是按类别ID排序(desc和asc)Book(我有很多书)只有当Category有名称SUN时 . 我想将Qsort作为Sort接口传递给PageRequest sping类 .

我不知道如何实现它 . 我尝试了很多方法,但这些都没有解决这个问题(例如一些子查询在集合上调用any()并使用Qsort类) . 我担心使用Query DSL而不是Criteria Api会出错 . 有人可以指导我吗?我将非常感激 .

最好的祝福